2012-11-11 27 views
5

मैं टॉमकैट और को अपने वेब ऐप को उर्फ ​​वसा जार के रूप में गठबंधन/एम्बेड करने की उम्मीद कर रहा था लेकिन मुझे यकीन नहीं है कि यह संभव है या नहीं। Jetty using the Maven Shade plugin और Winstone के साथ यह संभव है लेकिन मैंने टॉमकैट 7 के साथ कुछ ऐसा करने की कोशिश की और इसे ठीक से लोड नहीं किया जा सका। लक्ष्य कुछ ऐसा करने में सक्षम होना है: java -jar mywebapp.jarएक फैट जार में ऐप के साथ टॉमकैट एम्बेड करें

समस्या यह है कि टॉमकैट फ़ाइल सिस्टम से चीजें लोड करना चाहता है, क्लासपाथ से नहीं। यही है कि आप टोमकैट एम्बेड कर सकते हैं लेकिन यह आपकी WAR फ़ाइलों को फ़ाइलों के रूप में उपलब्ध होने की उम्मीद करेगा।

मैंने पिछले SO Posts for embedding Tomcat 6 & 7 पर कई तकनीकों की कोशिश की। जबकि मैं इसे एम्बेडेड कर सकता हूं और शुरू किया है, यह मेरे ऐप तक नहीं पहुंच सकता है।

मुझे लगता है कि एक विकल्प में बूट पर जेएआर स्वयं को अनजिप कर रहा है ताकि AppBase और DocBase फाइल सिस्टम पर फ़ाइलें हों। मैंने अभी तक कोशिश नहीं की है लेकिन करेंगे।

सवाल का डुप्लिकेट यहाँ है कि मैं अंत में पाया है: Self-contained war file with Tomcat embedded? (डुप्लीकेट के रूप में बंद करने के लिए वोट करें)

+0

वेबपैप में एम्बेड टॉमकैट ... किसके लिए? – aviad

+0

क्षमा करें मुझे प्रश्न का जवाब याद आती है। मेरा मतलब है कि वेबपैप में गठबंधन करें और एम्बेड न करें। एक वसा जार का विचार [DevOps को सरल बनाना] है (http://dropwizard.codahale.com/getting-started/#building-fat-jars)। आपको ऐप चलाने की ज़रूरत है 'java -jar my-webapp.jar'। –

+0

यहां फैट जार सृजन का एक और उदाहरण है: http://one-jar.sourceforge.net/ –

उत्तर

4

मुझे नहीं पता कि मैं कैसे इस लापता रखा लेकिन बिलाव Maven प्लगइन अब एक निष्पादन युद्ध बनाने का समर्थन करता है है :

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

अद्यतन अगर आप बिलाव 8 की जरूरत है आप एक विशेष विन्यास की जरूरत है। आप प्लगइन के 2.0 संस्करण का उपयोग करना चाहिए क्योंकि 2.2 टोमकैट 7 प्लगइन काम नहीं करेगा और आपको तीसरे पक्ष के प्लगइन tomcat8-war-runner की आवश्यकता होगी। नीचे मैंने मैवेन कॉन्फ़िगरेशन को संलग्न किया है जिसके लिए आपको आवश्यकता होगी जो आपको टॉमकैट 8 के सही संस्करण को चुनने की अनुमति देता है (tomcat.version संपत्ति)।

टॉमकैट 8 मेवेन प्लगइन एक गन्दा राज्य में है और अभी भी जारी नहीं किया गया है (कृपया जिरा पर वोट दें और इसे पूरा करने के लिए शिकायत करें)।

अंत में इस मेवेन प्लगइन दृष्टिकोण के साथ एक प्रमुख चेतावनी यह है कि प्लगइन छद्म एम्बेड करता है। यह आपका ऐप उसी क्लासलोडर में टॉमकैट के रूप में नहीं चल रहा है और वास्तव में प्रारंभिकरण के दौरान तैनात किया गया है। इस दृष्टिकोण के लिए पेशेवर और विपक्ष हैं।

वसंत बूट और यह example from Oracle दूसरी ओर उसी ऐप के रूप में उसी क्लासलोडर में टॉमकैट चलाएगा (यह वास्तव में मुझे लगता है कि यह वास्तव में एम्बेडेड है)।

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