स्प्रिंग बूट का एम्बेडेड टॉमकैट विकास और तैनाती दोनों के लिए बहुत आसान है।वसंत बूट: एम्बेडेड टोमकैट में एक और WAR फ़ाइलों को कैसे जोड़ें?
लेकिन क्या होगा अगर एक और (तृतीय पक्ष) WAR फ़ाइल (उदाहरण के लिए, GeoServer) को जोड़ा जाना चाहिए?
- एक सामान्य बिलाव सर्वर स्थापित करें:
शायद निम्नलिखित सामान्य प्रक्रिया है।
- स्प्रिंग बूट एप्लिकेशन को एक WAR फ़ाइल के रूप में बनाएं, और इसे टॉमकैट के वेबपैस फ़ोल्डर में जोड़ें।
- वेबपैस फ़ोल्डर में एक और (तृतीय-पक्ष) WAR फ़ाइल भी जोड़ें।
लेकिन यह अच्छा होगा अगर निम्न कॉन्फ़िगरेशन संभव था।
- स्प्रिंग बूट एप्लिकेशन को एक स्टैंडअलोन जार के रूप में बनाएं, जिसमें एम्बेडेड टोमकैट शामिल है।
- स्प्रिंग बूट एप्लिकेशन जार को तैनात करें।
- एम्बेडेड टॉमकैट पहचानने वाले फ़ोल्डर में एक और (तृतीय-पक्ष) WAR फ़ाइल जोड़ें।
- एम्बेडेड टोमकैट का उपयोग कर स्प्रिंग बूट एप्लिकेशन सामग्री और एक और WAR की सामग्री दोनों की सेवा करें।
यह कैसे किया जा सकता है?
अद्यतन
जब वसंत बूट आवेदन वसा जार (= निष्पादन योग्य जार) से बना है, जवाब में कोड पर्याप्त नहीं है। संशोधित एक प्रकार है:
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
Tomcat tomcat) {
try {
Context context = tomcat.addWebapp("/foo", "/path/to/foo.war");
WebappLoader loader =
new WebappLoader(Thread.currentThread().getContextClassLoader());
context.setLoader(loader);
} catch (ServletException ex) {
throw new IllegalStateException("Failed to add webapp", ex);
}
return super.getTomcatEmbeddedServletContainer(tomcat);
}
};
}
के बाद से एक वसा जार में जार फ़ाइलों प्रणाली classloader से लोड नहीं किया जा सकता है, एक स्पष्ट माता पिता classloader निर्दिष्ट किया जाना चाहिए। अन्यथा, अतिरिक्त WAR स्प्रिंग बूट एप्लिकेशन के वसा जार में लाइब्रेरी जार लोड नहीं कर सकता है जिसमें डब्ल्यूएआर जोड़ा गया है।
टैग विवरण पढ़ें। "एम्बेडेड" "एम्बेडिंग" नहीं है! – Olaf
मैं वर्तमान में ऐसा करने की कोशिश कर रहा हूं ([यहां देखें] (http://stackoverflow.com/questions/42191815/cannot-add-web-plplication-to-built-in-tomcat)) लेकिन मुझे मिल रहा है अनुपलब्ध फ़ाइल निर्भरताओं के कारण अपवादों के टन। कोई विचार है कि मैं यहाँ क्या खो रहा हूँ? – displayname