2012-11-11 9 views
5

Speravo di combinare/incorporare Tomcat e la mia app Web come aka jar grasso ma non sono sicuro se è possibile. È possibile con Jetty using the Maven Shade plugin e Winstone ma ho provato qualcosa di simile con Tomcat 7 e non ho potuto farlo caricare correttamente. L'obiettivo è essere in grado di fare qualcosa come: java -jar mywebapp.jar.Incorpora Tomcat con l'app in un vasetto di grasso

Il problema è che Tomcat desidera caricare le cose dal file system e non dal classpath. È possibile integrare Tomcat, ma i file WAR saranno disponibili come file.

Ho provato molte delle tecniche precedenti allo SO Posts for embedding Tomcat 6 & 7. Anche se riesco a incorporarlo e avviarlo, non posso accedere alla mia app.

Immagino che un'opzione abbia il JAR all'avvio decomprimersi in modo che AppBase e DocBase siano file sul file system. Non l'ho ancora provato, ma lo farò.

C'è un duplicato della domanda qui che finalmente ho trovato: Self-contained war file with Tomcat embedded? (si prega di votare per chiudere come duplicato)

+0

inserire tomcat in webapp ... per cosa? – aviad

+0

Mi dispiace, mi manca la domanda formulata. Intendevo combinare e non incorporare nella stessa webapp. L'idea di un vaso grasso è quella di [semplificare DevOps] (http://dropwizard.codahale.com/getting-started/#building-fat-jars). Tutto ciò che serve per eseguire l'app è 'java -jar my-webapp.jar'. –

+0

Ecco un altro esempio della creazione di Fat Jar: http://one-jar.sourceforge.net/ –

risposta

4

Non ho idea di come ho mantenuto manca questo, ma il Maven plugin Tomcat supporta ora fare una guerra eseguibile :

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

UPDATE se avete bisogno di Tomcat 8 è necessario una configurazione speciale. L'utente deve utilizzare la versione 2.0 del plug-in in quanto il plug-in di Tomcat 7 2.2 non funzionerà e sarà necessario il plug-in di terze parti tomcat8-war-runner. Di seguito ho allegato la configurazione di Maven che ti servirà, che ti permetterà anche di selezionare la versione corretta di Tomcat 8 che desideri (proprietà tomcat.version).

Il plug-in Maven Tomcat8 è in uno stato disordinato e non è ancora stato rilasciato (si prega di votare su jira e lamentarsi con loro per terminarlo).

Infine un avvertimento importante con questo approccio plugin Maven è che il plugin pseudo incorpora. Questa è la tua app non verrà eseguita nello stesso classloader di Tomcat e verrà effettivamente distribuita durante l'inizializzazione. Ci sono pro e contro a questo approccio.

Spring Boot e questo example from Oracle d'altra parte eseguiranno Tomcat nello stesso classloader della tua app (che è veramente incorporato credo).

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