2012-09-04 10 views
7

मैं टॉमकैट 7.0.2 9 में युद्ध तैनात करने का प्रयास करता हूं।टॉमकैट पर युद्ध तैनात करते समय अनंत लूप 7

GRAVE: Error waiting for multi-thread deployment of context descriptors to complete 
java.util.concurrent.ExecutionException: java.lang.StackOverflowError 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:83) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:574) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1413) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401) 
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:346) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.StackOverflowError 
    at java.util.HashSet.<init>(HashSet.java:86) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2208) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227) 

(कई ढेर ommited फ्रेम ...)

किसी को भी एक ही समस्या का सामना करना पड़ता है: मैं निम्नलिखित लॉग ढेर हो रही है?

+0

क्या आप web.xml सामग्री पोस्ट कर सकते हैं? – Dan

+2

https://issues.apache.org/bugzilla/show_bug.cgi?id=53871 देखें –

उत्तर

2

मुझे टॉमकैट 7.0 में भी इस समस्या का सामना करना पड़ रहा है। और टॉमकैट 7.0। । हालांकि टॉमकैट 7.0 के साथ। सबकुछ ठीक काम करता है, इसलिए मुझे संदेह है कि यह टॉमकैट मुद्दा है, जिसे हाल ही में पेश किया गया था।

7.0 में त्रुटि आई। और 7.0। , जब बिलाव शुरू करने और एक युद्ध फ़ाइल की तैनाती:

14:01:06,380 ERROR [HostConfig:576] Error waiting for multi-thread deployment of context descriptors to complete java.util.concurrent.ExecutionException: java.lang.StackOverflowError 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:111) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:574) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1413) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401) 
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:346) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.StackOverflowError 
    at java.util.HashSet.<init>(HashSet.java:103) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2243) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2260) 
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2260) 
1

का संभावित हल: मैं युद्ध का नाम बदल दिया (pom.xml में कोई finalName और विरूपण साक्ष्य संस्करण बदल) और यह काम किया .. .. क्यूं कर? मुझे अभी तक पता नहीं है!

एक वास्तविक और वास्तविक समाधान? निश्चित रूप से एक नया टोमकैट रिलीज। । ।

1

मेरे लिए यह व्यवहार IntelliJ आइडिया में पुन: उत्पन्न हुआ जब मैंने एप्लिकेशन संदर्भ को .pom फ़ाइल में मेवेन atrifactId के समान नाम पर सेट किया। ईजी। मेरा artifactId 'test' है, फिर मैंने एप्लिकेशन संदर्भ (कॉन्फ़िगरेशन संपादित करें -> टॉमकैट सर्वर -> परिनियोजन, विस्फोटित आर्टिफैक्ट का चयन करें) '/ test' पर सेट किया है। जैसे ही मैंने एप्लिकेशन संदर्भ बदल दिया, सब कुछ काम किया।

4

यह टोमकैट में #53871 के रूप में अपस्ट्रीम की सूचना दी गई है। समस्या एनोटेशन स्कैनिंग के साथ प्रतीत होती है, और टॉमकैट 7.0.38 में एक स्पष्ट त्रुटि संदेश शामिल है।

बग रिपोर्ट से:

निर्भरता प्रबंधन समस्याओं के कारण मैं एक युद्ध दो जार एक पुस्तकालय है, जहां संस्करण 1 एक वर्ग एक जो बी और एक और संस्करण से विरासत में मिली निहित के विभिन्न संस्करणों युक्त फ़ाइलों से युक्त फ़ाइल तैनात 2 जिसमें ए से उत्तराधिकारी कक्षा बी शामिल था, कक्षाएं इस तरह के आदेश में लोड की गई थीं कि ए और बी चक्रीय रूप से एक दूसरे से विरासत में मिला है जो populateSCIsForCacheEntry में एक स्टैक ओवरफ़्लो की ओर जाता है क्योंकि यह विरासत के पेड़ में चक्र का पता नहीं लगाता है।

यह ठीक मेरे मामले में समस्या थी: dom4j के एक पुराने संस्करण jaxen का असंगत संस्करण बंडल। 7.0.38 में नई त्रुटि निदान ने दिखाया कि कौन से वर्गों ने एक लूप बनाया और मैंने उन निर्भरताओं को अपग्रेड करके इसे ठीक किया।

1

के निम्न संस्करण का उपयोग करें टोमकैटके संस्करण के साथ समस्याएं हैं जिनका उपयोग आप कर रहे हैं टोमकैट

1

मुझे एक ही समस्या थी। मुझे लगता है कि यह टोमकैट 7 के कारण हुआ था, इसलिए जब मैं टॉमकैट 6.0.35 में बदल गया, तो समस्या स्वयं को एक आकर्षण की तरह हल कर दी गई।

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