2014-12-20 13 views
6

को लॉडा नहीं किया गया है मेरे पास एक बहुत ही सरल वसंत बूट एप्लिकेशन है जिसे मैं जेबॉस ईएपी पर तैनात करना चाहता हूं। यहां मेरा सरल अनुप्रयोग वर्ग है:जेबॉस ईएपी पर स्प्रिंगबूट एप्लिकेशन, सर्वलेट संदर्भ

@SpringBootApplication 

public class MayurApplication extends SpringBootServletInitializer{ 

    public static void main(String[] args) { 
     SpringApplication.run(MayurApplication.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(applicationClass); 
    } 

    private static Class<MayurApplication> applicationClass = MayurApplication.class; 
} 

@RestController 
class GreetingController { 

    @RequestMapping("/hello/{name}") 
    String hello(@PathVariable String name) { 
     return "Hello, " + name + "!"; 
    } 
} 

और मेरा pom.xml भी बहुत मूल है। जब मैं इस एप्लिकेशन को टॉमकैट पर चलाता हूं, एम्बेडेड टोमकैट का उपयोग करके वसंत बूट के साथ जहाजों का उपयोग करता हूं। सब कुछ सिर्फ एक क्लिक में आकर्षण की तरह काम करता है। मैं http://localhost:8080/demo/hello/World तक पहुंच सकता हूं और यह भी काम करता है।

अब मैंने इसे जेबॉस ईएपी संगत युद्ध बनाने की कोशिश की, मैंने टॉमकैट को स्प्रिंग-बूट-स्टार्टर-वेब से अलग करके अक्षम कर दिया, और इसे युद्ध परियोजना में परिवर्तित कर दिया। (जैसा कि लेख http://spring.io/blog/2014/03/07/deploying-spring-boot-applications द्वारा सुझाया गया है)।

मैं भी कहा:

<dependency> 
        <groupId>javax.servlet</groupId> 
        <artifactId>javax.servlet-api</artifactId> 
       <scope>provided</scope> 
      </dependency>, 

के रूप में यह शिकायत की गई थी।

अब यह सब के बाद, यह ठीक से संकलित करता है और एक युद्ध भी बनाता है। जब मैंने इस युद्ध को जेबॉस परिनियोजन के लिए कॉपी किया, तो मैं इसे कंसोल पर सफलतापूर्वक तैनात कर सकता हूं।

JBWEB000068: message /demo/hello/World 
JBWEB000069: description JBWEB000124: The requested resource is not available. 

क्या मैं गलत कर रहा हूँ: लेकिन बाकी एपीआई http://localhost:8080/demo/hello/World सिर्फ काम नहीं करता है और लगातार ब्राउज़र पर त्रुटि फेंकता है?

उत्तर

6

उत्तर यहाँ है: Spring Java Config vs Jboss 7

जाहिर है "/" ​​Jboss ईएपी 6.3 पर काम नहीं करता है, लेकिन "/ *" काम करता है। और ऐसा लगता है कि उन्होंने इसे जंगली उड़ान के साथ तय किया है 8

2

आपने टैग में जेबॉस 6 का उल्लेख किया है। मेरे अनुभव के आधार पर वसंत बूट Autoconfigure और जेबॉस 6 (विशेष रूप से) एक नो-गो है। यदि हॉट परिनियोजन चालू है या शायद कुछ अन्य शर्त जेबॉस वीएफएस युद्ध फ़ाइल में सभी जारों की कुछ आक्रामक स्कैनिंग करती है। एक बार जब यह autoconfigure मॉड्यूल में कक्षाओं को स्कैन करना शुरू कर देता है, तो यह ClassNotFoundException की तरह किसी त्रुटि के कारण निरस्त हो जाएगा। यदि आप Autoconfigure का उपयोग कर रहे हैं, तो एक समाधान कंटेनर के lib में वसंत मॉड्यूल लगाने के लिए हो सकता है। लेकिन इससे तैनाती कमजोर हो जाएगी। मैं Spring Boot Reference Guide में JBoss 7 और न ही Wildfly 8.

+1

असल में - मैं अब जेबॉस 6 के साथ कई स्प्रिंग बूट अनुप्रयोगों को सफलतापूर्वक तैनात करने में सक्षम हूं। इस उपलब्धि की कुंजी जब्स में तैनात जेबॉस-स्कैनिंग.एक्सएमएल का उपयोग कर रही थी ताकि जेबॉस को ऑटोकॉन्फिगर lib में प्रत्येक वर्ग को कोशिश करने और लोड न करने के लिए कहा जा सके। । कुछ अन्य बदलाव भी हैं जिनके बारे में मुझे लिखने का अर्थ है लेकिन jboss-scanning.xml कुंजी थी। – juice

14

इस मिले पर इस व्यवहार नहीं देखा था, application.properties फ़ाइल में

server.servlet-path=/* 

JBoss ईएपी 6.2 में यह परीक्षण किया है और ठीक से काम किया नीचे पंक्ति जोड़ें।

+1

यह हमारे लिए काम किया। – jax

+1

यह काम किया। मुझे लगता है कि स्पष्टीकरण सही ढंग से चिह्नित उत्तर में है। – ravindrab

संबंधित मुद्दे