2014-12-05 6 views
8

मैं अपवाद नीचे हो रही है जब भी अपने बाकी ग्राहक कोड नीचे दिए गए कोड का उपयोग कर बाकी सेवा को फोन करेगा: कोड:बाकी JAX-आरएस javax.ws.rs.ProcessingException:

public void putWatcher(Watcher watcher) 
    { 
     System.out.println("In REST Client putWatcher.***********"); 

     target = target.path(RESOURCE_WATCHERS).path(watcher.getWatcheruri()); 
     System.out.println(target.getUri()); 
     Invocation.Builder builder = target.request(); 
     builder.put(Entity.json(watcher)); 
//  Response response = target.request().put(Entity.json(watcher)); 
     System.out.println("Returned from REST Call"); 
    } 

अपवाद :

: javax.ws.rs.ProcessingException: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family; 
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255) 
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:667) 
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:664) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424) 
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:664) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:424) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:318) 

Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family; 
    at org.glassfish.jersey.message.internal.Statuses$StatusImpl.<init>(Statuses.java:63) 
    at org.glassfish.jersey.message.internal.Statuses$StatusImpl.<init>(Statuses.java:54) 
    at org.glassfish.jersey.message.internal.Statuses.from(Statuses.java:93) 
    at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:323) 
    at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:227) 
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246) 
    ... 29 more 

मेरे बाकी सेवा बिलाव 8 सर्वर और ग्राहक पर तैनात किया जाता है जेबॉस 7.2 पर कोड तैनात किया गया है। क्लाइंट एप्लिकेशन एसआईपी-सर्वलेट एप्लिकेशन है जो आरईएसटी क्लाइंट को भी बंडल करता है।

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

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>3.8.1</version> 
    <scope>test</scope> 
</dependency> 
<!-- logging dependency --> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging-api</artifactId> 
    <version>1.0.4</version> 
    <scope>provided</scope> 
</dependency> 
<!-- web j2ee dependencies --> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 
<!-- sip dependencies --> 
<dependency> 
    <groupId>org.mobicents.servlet.sip</groupId> 
    <artifactId>sip-servlets-spec</artifactId> 
    <version>1.7.0.FINAL</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>2.13</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-common</artifactId> 
    <version>2.13</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>2.13</version> 
</dependency> 

मैं भी रूप में इस लिंक https://github.com/gondor/openstack4j/issues/30 यह JBoss config standalone.xml से JAX-आरएस निष्क्रिय करने के लिए कहते हैं पर सुझाव दिया करने की कोशिश। मैं सर्वर शुरू करते समय स्टैंडअलोन-एसआईपी.एक्सएमएल का उपयोग कर रहा हूं इसलिए मैंने इसे केवल संशोधित किया। इन दो पंक्तियों को हटा दिया गया:

<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> 
<extension module="org.jboss.as.jaxrs"/> 

यह भी काम नहीं कर रहा है। मुझे नहीं पता कि कैसे अक्षम किया जाए, सिर्फ जेएक्स-आरएस की खोज की और उन पंक्तियों को हटा दिया जहां मैंने उन्हें पाया।

एक एसओ पोस्ट में Response response के बजाय javax.ws.rs.core.Response respone का उपयोग करने का सुझाव था, लेकिन यह भी किस्मत नहीं था।

एक और जानकारी: आरईएसटी कॉल स्वयं सफल है, कि मैं टॉमकैट सर्वर पर देख सकता हूं।

कृपया सुझाव दें कि और क्या किया जा सकता है।

धन्यवाद

उत्तर

3

आप अपने JBoss उदाहरण के पुस्तकालयों सूची पर एक नज़र डालें और JAX-WS के सभी कार्यान्वयन हटा सकते हैं? मेरे लिए ऐसा लगता है कि वे जर्सी के साथ संघर्ष करते हैं जो आप अपनी युद्ध फ़ाइल में बंडल करते हैं।

संपादित करें:

असल में मैं आप अपने सर्वर और वेब अनुप्रयोग के बीच JAX-WS संस्करण संघर्ष को हल करने की जरूरत है लगता है। विधि परिवार ओएफ आप में अनुपलब्ध हैं। प्रतिक्रिया 0Status.FamilyJava 7 में पेश किया गया था लेकिन Java EE 6 से गायब है। तो जावा ईई 6 संगत जर्सी संस्करण या सर्वर को अपग्रेड करें।

और अगर बाद में Maven समस्याओं का कारण है, तो वास्तविक लात के लिए, वहाँ भी

mvn dependency:tree 

और

<dependency> 
... 
     <exclusions> 
      <exclusion>...</exclusion> 
+0

यदि मैं जार हटा देता हूं तो जेबॉस शुरू नहीं होता है। – user3275095

6

मैं हाल ही में इस समस्या से टकरा गई। यह लाइब्रेरी के कारण javax.ws.rs.core का पुराना कार्यान्वयन प्रदान करता था।मैंने इसे निम्नानुसार तय किया:

<dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-jaxws</artifactId> 
     <version>1.6.2</version> 
     <scope>runtime</scope> 
     <exclusions> 
      <!-- Causes java.lang.NoSuchMethodError: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family; --> 
      <exclusion> 
       <groupId>javax.ws.rs</groupId> 
       <artifactId>jsr311-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

धन्यवाद, इसने मेरी समस्या हल की। ​​ – Rinat

+0

मुझे जेएसआर के किस संस्करण का उपयोग करना चाहिए, अगर मुझे इसे समझना है? –

0

मुझे एक समान त्रुटि का सामना करना पड़ा। "java.lang.No.SuchMethodError: javax/ws/rs/ClientErrorException.validate (Ljavax/ws/rs/core/Response; ljavax/ws/rs/core/प्रतिक्रिया $ स्थिति $ परिवार;"

रूट कारण: वेब सेवा प्रदर्शन परीक्षक सही अनुरोध निकाय में गुजरने के बिना स्क्रिप्ट का उपयोग करके वेब सेवा का आह्वान करता है। वेब सेवा कॉल के पथ यूआरएल में "/" गायब होना एक और मामला है।

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