2017-08-03 23 views
8

में सीएक्सएफ 3.एक्स जेएक्स-आरएस सेवा को तैनात करने में असमर्थ वेबलॉग 12.1.3 से 12.2.1 तक सीएक्सएफ 3.एक्स के साथ निर्मित जेएक्स-आरएस सेवा को अपग्रेड करने के बाद मुझे निम्नलिखित अजीब मुद्दे का सामना करना पड़ रहा हैवेबलॉगिक 12 सी (12.2.1)

<03-ago-2017, 3:22:38,789 PM CEST> <Error> <HTTP> <BEA-101216> <Servlet: "JAX-RS/Jersey#1" failed to preload on startup in Web application: "sife". 
A MultiException has 1 exceptions. They are: 
1. java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class 

     at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1007) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:962) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1054) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1046) 
     at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:696) 
     Truncated. see log file for complete stacktrace 

ध्यान दें कि मैं जर्सी नहीं, सीएक्सएफ का उपयोग कर रहा हूं, लेकिन ऐसा लगता है कि वेबलॉगिक इसका उपयोग करने की कोशिश कर रहा है (यह 12.1.3 के साथ नहीं होता है)। मैं इस सिफारिशों के बाद विन्यास फाइल में यह अक्षम: https://jerometambo.github.io/blog/2016/12/13/How-to-use-CXF-3x-implementation-of-JAX-RS-20-REST-with-Weblogic-12c.html

डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ

, Weblogic बाकी वेब सेवाओं को तैनात करने के लिए अपने आंतरिक कार्यान्वयन (JAX-आरएस 2.0 और क्रमबद्धता) का उपयोग करना चाहता है (त्रुटि 500):

META-INF/weblogic-application.xml

<weblogic-application xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application 
              http://xmlns.oracle.com/weblogic/weblogic-application/1.8/weblogic-application.xsd"> 

    <prefer-application-packages> 
     <package-name>javax.ws.rs.*</package-name> 
     <package-name>com.fasterxml.jackson.*</package-name> 
     <package-name>weblogic.jaxrs.api.client.*</package-name> 
     <package-name>weblogic.jaxrs.internal.api.*</package-name> 
     <package-name>weblogic.jaxrs.dispatch.*</package-name> 
     <package-name>weblogic.jaxrs.monitoring.util.*</package-name> 
    </prefer-application-packages> 
</weblogic-application> 

वेब-INF/weblogic.xml

<weblogic-web-app 
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"> 

    <container-descriptor> 
     <prefer-application-packages> 
      <package-name>javax.ws.rs.*</package-name> 
      <package-name>com.fasterxml.jackson.*</package-name> 
     </prefer-application-packages> 
    </container-descriptor> 
</weblogic-web-app> 

अगर यह अपने प्रोजेक्ट की एक विशिष्ट समस्या है या यह एक weblogic मुद्दा है मैं नहीं जानता। मुझे this और this जैसे समान समस्याएं मिली हैं, और मैंने उनका उपयोग करने का प्रयास किया।

ये मेरी निर्भरता (आइवी वाक्य रचना)

<dependency org="org.apache.cxf" name="cxf-rt-frontend-jaxrs" rev="3.1.10" conf="default" /> 
    <dependency org="org.apache.cxf" name="cxf-rt-rs-extension-providers" rev="3.1.10" conf="default" /> 
    <dependency org="org.apache.cxf" name="cxf-rt-transports-http" rev="3.1.10" conf="default" /> 
    <dependency org="com.fasterxml.jackson.jaxrs" name="jackson-jaxrs-json-provider" rev="2.6.6" conf="default" /> 

और पूर्ण स्टैक ट्रेस हैं

<03-ago-2017, 3:32:03,645 PM CEST> <Warning> <JAXRSIntegration> <BEA-2192510> <Cannot add Jersey servlet for application class org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet$ApplicationImpl because ApplicationPath annotation is not set on it.> 
<03-ago-2017, 3:32:03,737 PM CEST> <Warning> <JAXRSIntegration> <BEA-2192511> <The list of resource packages: com.fasterxml.jackson.jaxrs.base;org.apache.cxf.jaxrs.provider;com.fasterxml.jackson.jaxrs.json;org.apache.cxf.jaxrs.provider.aegis;es.aragon.sife.server.filter;org.apache.cxf.jaxrs.provider.jsrjsonp;es.aragon.sife.keystore.api;es.aragon.sife.server.account.api;org.apache.cxf.jaxrs.provider.xmlbeans;org.apache.cxf.jaxrs.validation;es.aragon.sife.server.task.api;org.apache.cxf.jaxrs.provider.json;org.apache.cxf.jaxrs.provider.atom;es.aragon.sife.server.config.api> 
ago 03, 2017 3:32:16 PM es.gob.afirma.signers.xml.Utils installXmlDSigProvider 
<03-ago-2017, 3:32:20,581 PM CEST> <Error> <HTTP> <BEA-101216> <Servlet: "JAX-RS/Jersey#1" failed to preload on startup in Web application: "sife". 
A MultiException has 1 exceptions. They are: 
1. java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class 

     at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1007) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:962) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1054) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1046) 
     at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:696) 
     Truncated. see log file for complete stacktrace 
Caused By: java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class 
     at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:146) 
     at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120) 
     at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179) 
     at org.glassfish.jersey.media.sse.SseFeature.<clinit>(SseFeature.java:62) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     Truncated. see log file for complete stacktrace 
> 
<03-ago-2017, 3:32:20,696 PM CEST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application "sife". 
weblogic.application.ModuleException: java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class 
     at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) 
     at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45) 
     Truncated. see log file for complete stacktrace 
Caused By: java.lang.LinkageError: ClassCastException: attempting to castzip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/sife/845176/war/WEB-INF/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/C:/Oracle/Middleware/Oracle_Home/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class 
     at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:146) 
     at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120) 
     at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179) 
     at org.glassfish.jersey.media.sse.SseFeature.<clinit>(SseFeature.java:62) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     Truncated. see log file for complete stacktrace 
> 
<03-ago-2017, 3:32:20,762 PM CEST> <Notice> <Log Management> <BEA-170027> <The server has successfully established a connection with the Domain level Diagnostic Service.> 
<03-ago-2017, 3:32:20,931 PM CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN.> 
<03-ago-2017, 3:32:21,46 PM CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING.> 
<03-ago-2017, 3:32:21,174 PM CEST> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.> 
<03-ago-2017, 3:32:21,186 PM CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.> 
<03-ago-2017, 3:32:22,710 PM CEST> <Error> <HTTP> <BEA-101216> <Servlet: "weblogic.management.rest.Application" failed to preload on startup in Web application: "wls-management-services.war". 
A MultiException has 1 exceptions. They are: 
1. java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 

     at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1007) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:962) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1054) 
     at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1046) 
     at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:696) 
     Truncated. see log file for complete stacktrace 
Caused By: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1350) 
     Truncated. see log file for complete stacktrace 
> 
<03-ago-2017, 3:32:22,747 PM CEST> <Error> <J2EE> <BEA-160001> <Error deploying Internal Application: weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 
weblogic.application.utils.StateChangeException: weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:58) 
     at weblogic.application.services.BackgroundDeploymentManagerService$BackgroundDeployAction.run(BackgroundDeploymentManagerService.java:396) 
     at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666) 
     at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348) 
     at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333) 
     Truncated. see log file for complete stacktrace 
Caused By: weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 
     at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) 
     at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45) 
     Truncated. see log file for complete stacktrace 
Caused By: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1350) 
     Truncated. see log file for complete stacktrace 

कारगर युक्तियाँ

यह काम करता है अगर मैं का उपयोग कर पहले से अन्य CXF मॉड्यूल की तैनाती डिफ़ॉल्ट जेएक्स-आरएस कार्यान्वयन और WEB-INF/lib/javax.ws.rs-api-2.0.1.jar हटा रहा है। हो सकता है कि वेबलॉगिक किसी प्रकार की आंतरिक प्रारंभिकता करे।

myapp.ear 
    init.war (JAX-RS with CXF and removing javax.ws.rs-api-2.0.1.jar) 
    myapp.war (JAX-RS with CXF and weblogic configuration) 

उत्तर

1

@pedrofb, यह आपके प्रश्न का पूरी तरह उत्तर नहीं दे सकता है, हालांकि, मुझे एक बार टॉमकैट के साथ एक ही समस्या थी। लक्षण समान हैं, समस्या वास्तव में अलग-अलग जार यानी जार छाया में मौजूद विभिन्न वर्गों की उपस्थिति के कारण नहीं थी। यह क्लासलोडर छायांकन के कारण था। टॉमकैट में, क्लासलोडिंग वास्तव में उलटा हुआ है, सामान्य 'पूछने वाले-माता-पिता-क्लासलोडर-पहले' प्रकार का मॉडल नहीं, यदि कोई एप्लिकेशन क्लासलोडर कक्षा प्राप्त कर सकता है (जहां यह केवल वेब-आईएनएफ/lib या कक्षाओं से लोड होता है) तो क्लासलोडर कक्षा लोड करता है। अब, आपके मामले में, मुझे लगता है, चूंकि जेएक्स-आरएस जार आपके वेब-आईएनएफ/लिब में मौजूद हैं, इसलिए यह वेब एप्लिकेशन स्तर पर वहां से लोड हो रहा है। हालांकि, जब एक ही वस्तु कंटेनर को पास की जा रही है, तो यह इसे एक ही कक्षा में डालने की कोशिश कर रहा है लेकिन एक अलग क्लासलोडर द्वारा लोड किए गए कंटेनर स्तर पर। विभिन्न क्लासलोडर्स द्वारा लोड की गई कक्षाओं को अलग माना जाता है; ClassCastException के लिए यह कारण होगा।

यह भी समझाएगा कि जब आप वेब-आईएनएफ/lib से जेएक्स-आरएस जार को हटाते हैं तो क्लासकास्ट अपवाद क्यों नहीं होता है। यहां पर कामकाज सीमित है, या तो आप अपने वेब-आईएनएफ/lib से जेएक्स-आरएस जार को हटा चुके हैं जैसा आपने किया है। (यह संभावित रूप से समस्याग्रस्त हो सकता है लेकिन आप गैर उत्पादन सर्वर में प्रयोग कर सकते हैं), कंटेनर जेएक्स-आरएस जार को अपनी इच्छानुसार बदलें।

जैसा कि मैंने कहा था, यह शायद आपकी समस्या को पूरी तरह से हल नहीं करेगा, लेकिन यह समस्या हो सकती है कि समस्या कहां से आ रही है। [जैसा कि मैंने कुछ साल पहले देखा था, वेबलॉगिक com.bea.weblogic.org.apache.tomcat जैसे बदले गए पैकेज नामों के साथ टॉमकैट का उपयोग अपने वेब कंटेनर कोर के रूप में करता है (सुनिश्चित नहीं है कि यह अभी भी वही है) ...।

उम्मीद है कि इससे मदद मिलती है।

+0

आपके उत्तर के लिए धन्यवाद। मुझे आश्वस्त है कि यह * wls 12.2.1 * की क्लासलोडर समस्या है क्योंकि * wls 12.1.3 * और * tomcat * में यह पूरी तरह से काम करता है। मैंने अपने साथ wls जेएक्स-आरएस .jar को प्रतिस्थापित करने की कोशिश की लेकिन मुझे भाग्य नहीं मिला – pedrofb

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