2013-08-16 7 views
6

एक जेएसएफ वेब एप्लिकेशन जावा ईई वेब सेवा से संसाधन पुनर्प्राप्त करने का प्रयास करता है। जेएसएफ वेब ऐप काम करता है । ठीक जब से मैं HTTP क्लाइंट स्रोत जोड़ा वेब सेवा संसाधनों पुनर्प्राप्त करने के लिए JBoss उदाहरण के बारे में दावा है:java.lang.LinkageError: लोडर बाधा उल्लंघन: विधि को हल करते समय "org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor

15:29:47,689 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http--0.0.0.0-443-1) Error Rendering View[/index.xhtml]: javax.el.ELException: /surfaceParts/sideBarLeft.xhtml @14,79 value="#{categories.cats}": java.lang.LinkageError: loader constraint violation: when resolving method "org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.<init>(Lorg/apache/http/client/HttpClient;Lorg/apache/http/protocol/HttpContext;)V" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, at/fhj/ase/ssl/SSLClientHelper, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for resolved class, org/jboss/resteasy/client/core/executors/ApacheHttpClient4Executor, have different Class objects for the type xecutors.ApacheHttpClient4Executor.<init>(Lorg/apache/http/client/HttpClient;Lorg/apache/http/protocol/HttpContext;)V used in the signature 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIData.getValue(UIData.java:731) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIData.getDataModel(UIData.java:1798) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIData.setRowIndex(UIData.java:473) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIData.encodeBegin(UIData.java:1118) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1777) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb-7.0.13.Final.jar:] 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] 
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25] 
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.<init>(Lorg/apache/http/client/HttpClient;Lorg/apache/http/protocol/HttpContext;)V" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, at/fhj/ase/ssl/SSLClientHelper, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for resolved class, org/jboss/resteasy/client/core/executors/ApacheHttpClient4Executor, have different Class objects for the type xecutors.ApacheHttpClient4Executor.<init>(Lorg/apache/http/client/HttpClient;Lorg/apache/http/protocol/HttpContext;)V used in the signature 
    at at.fhj.ase.ssl.SSLClientHelper.getSSLClientRequest(SSLClientHelper.java:71) [classes:] 
    at at.fhj.ase.beans.Categories.getCats(Categories.java:39) [classes:] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_25] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_25] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_25] 
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_25] 
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) [jboss-el-api_2.2_spec-1.0.0.Final.jar:1.0.0.Final] 
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) [jbossweb-7.0.13.Final.jar:] 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    ... 36 more 

मैं पूरी तरह से सुनिश्चित करें कि HttpClient स्रोत ठीक है कर रहा हूँ के बाद से यह एक ही क्या वेब सेवा में प्रयोग किया जाता है जुनीट परीक्षणों के लिए पक्ष।

प्रोजेक्टसेटअप: वेब सेवा जेबॉस एएस 7.1 पर तैनात है (अब तक ठीक काम करता है) जेएसएफ वेब क्लाइंट उसी जेबॉस इंस्टेंस पर तैनात है। दोनों ग्रहण के माध्यम से शुरू कर रहे हैं। JSF web client DeploymentAssembly

मुझे लगता है कि लिंकेज त्रुटि बाहरी (BuildPath & DeploymentAssembly) के कारण होता है अपाचे HTTP क्लाइंट लाइब्रेरी कहा: JSF वेब ग्राहक के लिए तैनाती विधानसभा की तरह दिखता है। लेकिन मैं इसे कैसे हल करूं?

कृपया मुझे बताएं कि आपको और विवरण चाहिए या नहीं। मैं किसी भी मदद के लिए बहुत आभारी हूं!

उत्तर

9

कारण आपको त्रुटि दिखाई दे रही है क्योंकि RestEasy पर httpclient जार पर निर्भरता है जो एक jboss मॉड्यूल के रूप में प्रदान की जाती है। आपके द्वारा प्रदान किया गया संस्करण जेबॉस द्वारा प्रदान किए गए एक के साथ संघर्ष कर रहा है।

आपको अपने वेब ऐप के साथ HTTP क्लाइंट जार को पैकेज करने की आवश्यकता क्यों है? क्या यह कुछ आराम क्लाइंट कॉल के लिए है? उस स्थिति में आपको RestEasy का उपयोग करना चाहिए जो जेबॉस एएस 7 पर डिफ़ॉल्ट जेएक्स-आरएस कार्यान्वयन है। यह उस उद्देश्य के लिए उपयोग करने के लिए एक बेहतर ढांचा होगा।

आपका दूसरा विकल्प आपके WEB-INF\jboss-deployment-structure.xml में org.apache.httpcomponents मॉड्यूल पर निर्भरता को जोड़ने और WEB-INF\lib से http-ग्राहक जार दूर करने के लिए है।

+0

उत्तर के लिए धन्यवाद। हां, एसएसएल क्लाइंट कॉल के लिए जार की आवश्यकता है। मैं 'org.jboss.resteasy.client.ClientRequest' का उपयोग कर रहा हूं और कॉल इस तरह दिखता है: ' SSLClientHelper ch = new SSLClientHelper(); ClientRequest अनुरोध = ch.getSSLClientRequest (categoriesURL, \t \t "[email protected]", "उपयोगकर्ता"); ' मैं' SSLClientHelper' बनाया क्योंकि मैं अपने स्वयं सर्टिफाईड प्रमाण पत्र को स्वीकार करने के क्रम में एक X509 TrustManager गयी। क्या कोई तरीका है जिससे मुझे 'SSLClientHelper' की आवश्यकता नहीं है? –

+1

देखें कि इस [लिंक] पर उदाहरण (http://wahz.blogspot.com/2012/11/ssl-using-resteasy-client.html) मदद करता है। – CoolBeans

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