java ee Wildfly पर टिका पार्सर्स तैनाती का मुद्दा



java-ee deployment (1)

एक वेब अनुप्रयोग के हिस्से के रूप में मुझे विभिन्न आने वाली फाइलों की पाठ्य सामग्री को पार्स करने की आवश्यकता है I यह टिका-पार्सर का उपयोग करना बहुत सरल होना चाहिए, लेकिन जैसे ही मैं वाइल्डफ़ी पर अपने वेबपॉप को व्यवस्थित करने की कोशिश करता हूं (परीक्षण v.8.2.1 और v.10.0.0.RC4) मैं समस्याओं में चला जाता हूं

यह बहुत ही बुनियादी वेबपैम में मेरा स्वभाव निर्भरता है:

<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.11</version>

यह त्रुटि है कि मैं तैनाती के दौरान मिलती है (मैन्युअल तैनाती या परीक्षण के लिए आर्किलियन का प्रयोग):

Caused by: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"backend-test.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"backend-test.war\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000071: Managed bean with a parameterized bean class must be @Dependent: class org.apache.cxf.jaxrs.provider.SourceProvider"}}

मैं मानता हूं कि एक निर्भरता संघर्ष है, लेकिन इसका कोई सुराग नहीं है कि यह कैसे बचें। beans.xml? jboss तैनाती-structure.xml? किसी भी wildfly मॉड्यूल अक्षम करें?

सादर, फिलिप


इस तथ्य के अलावा कि टिका आपके रनटाइम क्लासपाथ पर बहुत अपरिहार्य ट्रांजिटिव निर्भरता के एक और पहाड़ी के साथ संदिग्ध निर्भरता के एक विशाल ढेर को छोड़ देता है, आप इस मुद्दे पर चल रहे हैं:

http://weld.cdi-spec.org/documentation/#4

https://issues.jboss.org/browse/CDI-377

असल में यह सीडीआई 1.1 में एक असंगति मुद्दा है जो सीडीआई 1.2 में हल किया गया है; Wildfly में मैन्युअल रूप से संस्करण 2.3.x को वेल्ड अपडेट करने से समस्या पूरी तरह से दूर हो सकती है।

एक मैन्युअल अपग्रेड करने के अलावा, आप निम्न सामग्री के साथ META-INF / jboss-all.xml फ़ाइल को घोषित करके समस्या को दूर कर सकते हैं। मान लें कि आपके पास युद्ध है, सटीक पथ webapp / META-INF / jboss-all.xml है।

<jboss xmlns="urn:jboss:1.0">
    <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/>
</jboss>

और अपने स्वयं के मॉड्यूल में एक WEB-INF / beans.xml फ़ाइल (फिर से: एक युद्ध संभालने) को परिभाषित करना सुनिश्चित करें, जिनके लिए सीडीआई समर्थन की आवश्यकता होती है। यह वेल्ड को केवल उन मॉड्यूलों को कॉन्फ़िगर करने का प्रयास करता है, जिनमें उनके पास बीन्स.एक्सएमएल फ़ाइल है, जो कि सीएक्सएफ नहीं करेगा।

सब के अलावा मैं वास्तव में निर्भरता के पेड़ की जांच करूँगा और देखें कि टिका के माध्यम से क्या खींचा गया है; उदाहरण के लिए आपको पता चल जाएगा कि javax.inject एपीआई को कंपाइल दायरे पर रखा गया है और इस तरह आपके आवेदन के साथ तैनात किया गया है, जो कुछ आप वास्तव में नहीं चाहते हैं।