2012-11-11 31 views
5

Tôi đã hy vọng kết hợp/nhúng Tomcat ứng dụng web của tôi dưới dạng còn gọi là bình chứa chất béo nhưng tôi không chắc chắn liệu nó có thể. Có thể của nó với Jetty using the Maven Shade pluginWinstone nhưng tôi đã thử một cái gì đó tương tự với Tomcat 7 và không thể làm cho nó tải đúng cách. Mục tiêu là để có thể làm điều gì đó như: java -jar mywebapp.jar.Nhúng Tomcat với Ứng dụng trong Một Thùng Chất béo

Vấn đề là Tomcat muốn tải mọi thứ từ hệ thống tệp chứ không phải từ đường dẫn lớp. Đó là bạn có thể nhúng Tomcat nhưng nó sẽ mong đợi các tệp WAR của bạn có sẵn dưới dạng tệp.

Tôi đã thử nhiều kỹ thuật trên SO Posts for embedding Tomcat 6 & 7 trước đó. Trong khi tôi có thể làm cho nó được nhúng và bắt đầu nó không thể truy cập ứng dụng của tôi.

Tôi đoán một tùy chọn là có JAR khi khởi động giải nén chính nó sao cho AppBaseDocBase là các tệp trên hệ thống tệp. Tôi chưa thử điều đó nhưng sẽ.

Có một trùng lặp của câu hỏi ở đây mà tôi cuối cùng đã tìm thấy: Self-contained war file with Tomcat embedded? (hãy bỏ phiếu để đóng như trùng lặp)

+0

nhúng tomcat trong webapp ... để làm gì? – aviad

+0

Xin lỗi tôi đã bỏ lỡ câu hỏi. Tôi có nghĩa là kết hợp và không nhúng trong webapp chính nó. Ý tưởng của một lọ chất béo là để [đơn giản hóa DevOps] (http://dropwizard.codahale.com/getting-started/#building-fat-jars). Tất cả những gì bạn cần để chạy ứng dụng là 'java -jar my-webapp.jar'. –

+0

Đây là một ví dụ khác về việc tạo ra Fat Jar: http://one-jar.sourceforge.net/ –

Trả lời

4

Tôi không có ý tưởng làm thế nào tôi giữ mất tích này nhưng Tomcat Maven Plugin bây giờ hỗ trợ thực hiện một WAR thực thi :

http://tomcat.apache.org/maven-plugin-2.0/executable-war-jar.html

CẬP NHẬT nếu bạn cần Tomcat 8 bạn cần một cấu hình đặc biệt. Bạn phải sử dụng phiên bản 2.0 của plugin như plugin 2,2 Tomcat 7 sẽ không hoạt động và bạn sẽ cần plugin của bên thứ ba tomcat8-war-runner. Dưới đây tôi đã đính kèm cấu hình maven bạn cần cũng cho phép bạn chọn đúng phiên bản Tomcat 8 mà bạn muốn (thuộc tính tomcat.version).

Plugin maven Tomcat8 ở trạng thái lộn xộn và vẫn chưa được phát hành (vui lòng bỏ phiếu bầu chọn jira và khiếu nại với họ để hoàn thành nó).

Cuối cùng, một cảnh báo quan trọng với phương pháp tiếp cận plugin maven này là plugin giả nhúng. Đó là ứng dụng của bạn sẽ không chạy trong cùng một trình nạp lớp như Tomcat và thực sự được triển khai trong khi khởi tạo. Có ưu và khuyết điểm đối với phương pháp này.

Khởi động mùa xuân và điều này example from Oracle mặt khác sẽ chạy Tomcat trong cùng một trình nạp lớp như ứng dụng của bạn (đó là nó thực sự được nhúng tôi nghĩ).

<plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.0</version> 
     <configuration> 
     <port>${tomcat.port}</port> 
     <path>/</path> 
     </configuration> 
     <executions> 
     <execution> 
      <id>tomcat-run</id> 
      <goals> 
      <goal>exec-war-only</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
      <path>/</path> 
      <port>${tomcat.port}</port> 
      <attachArtifactClassifierType>war</attachArtifactClassifierType> 
      <mainClass>org.apache.tomcat.maven.runner.Tomcat8RunnerCli</mainClass> 
      <extraDependencies> 
       <extraDependency> 
       <groupId>com.nitorcreations</groupId> 
       <artifactId>tomcat8-war-runner</artifactId> 
       <version>1.0</version> 
       </extraDependency> 
      </extraDependencies> 
      </configuration> 
     </execution> 
     </executions> 
     <dependencies> 
     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-core</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-util</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-coyote</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-api</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-jdbc</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-dbcp</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-servlet-api</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-jsp-api</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-jasper</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-jasper-el</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-el-api</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-catalina</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-tribes</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-catalina-ha</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-annotations-api</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-juli</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-logging-juli</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-logging-log4j</artifactId> 
      <version>${tomcat.version}</version> 
     </dependency> 
     </dependencies> 
    </plugin> 
Các vấn đề liên quan