2012-11-11 18 views
5

Tomcat ve web uygulamamı ana şişman kavanozu birleştirmeyi/yerleştirmeyi umuyordum ama mümkün olup olmadığından emin değilim. Jetty using the Maven Shade plugin ve Winstone ile mümkün ancak Tomcat 7 ile benzer bir şey denedim ve düzgün bir şekilde yüklenemedi. Amaç, java -jar mywebapp.jar gibi bir şey yapabilmektir. Sorun, Tomcat'in sınıf yolundan değil, dosya sisteminden şeyler yüklemek istediğidir. Tomcat'i gömebilirsiniz ama WAR dosyalarınızın dosyalar olarak kullanılabilir olmasını beklersiniz.Bir Fatlu Kavanoza Uygulama ile Gömme Gömme

Önceki SO Posts for embedding Tomcat 6 & 7 numaralı telefondan birçok tekniği denedim. Gömülü olarak alabilir ve başladığında uygulamanıza erişemez.

Sanırım bir seçenek önyükleme sırasında JAR'ı açıyor, böylece AppBase ve DocBase dosya sistemindeki dosyalardır. Bunu henüz denemedim ama olacak. Self-contained war file with Tomcat embedded? Ben bu eksik tuttu ama Tomcat Maven Plugin şimdi bir yürütülebilir WAR yapmak nasıl desteklediğini hiçbir fikrim yok

+0

Webcat'te tomcat'i yerleştirme ... ne için? – aviad

+0

Üzgünüm, soruyu özledim. Webapp'ın kendisinde birleştirmek ve yerleştirmek istemedim. Yağ kavanozu fikri [DevOps'u basitleştirmektir] (http://dropwizard.codahale.com/getting-started/#building-fat-jars). Uygulamayı çalıştırmak için gereken tek şey "java -jar my-webapp.jar". –

+0

İşte Fat Jar oluşturma başka bir örneğidir: http://one-jar.sourceforge.net/ –

cevap

4

(yineleme olarak kapatmak için oy lütfen): Sonunda buldum burada sorunun bir kopyası vardır

: Eğer Tomcat 8 gerekirse

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

GÜNCELLEME Eğer özel bir yapılandırma gerekir. 2.2 Tomcat 7 eklentisi çalışmazsa ve tomcat8-war-runner üçüncü taraf eklentisine ihtiyacınız olacaksa, eklentinin 2.0 sürümü'u kullanmanız gerekir. Aşağıda, ihtiyacınız olan Tomcat 8'in (tomcat.version özelliği) doğru sürümünü seçmenize izin verecek olan maven konfigürasyonunu ekledim.

Tomcat8 maven eklentisi dağınık bir durumda ve hala serbest bırakılmadı (lütfen jira'ya oy verin ve bitirmek için onlara şikayette bulunun).

Son olarak, bu maven eklenti yaklaşımıyla ilgili önemli bir uyarı, eklentinin sözde yerleştirilmiş olmasıdır. Bu, uygulamanız Tomcat ile aynı sınıfta yayınlanmayacak ve başlatma sırasında dağıtılacak. Bu yaklaşıma artıları ve eksileri vardır.

Spring Boot ve bu example from Oracle, diğer yandan Tomcat'i uygulamanızla aynı sınıf yükleyicide çalıştıracaktır (yani bence gerçekten gömülüdür).

<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>