3

What i am doing

Previosly i am using Jercey Client but Jercey don't have mechanism called Retry I have to use RestEasy client so i have added below dependency in my pom.xml file

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <!-- JAXB support -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>jaxrs-api</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-atom-provider</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-multipart-provider</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-links</artifactId>
            <version>3.0.8.Final</version>
        </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson2-provider</artifactId>
             <version>3.0.8.Final</version>
        </dependency>

Java code I have written

 ResteasyClient client;
   client = new ResteasyClientBuilder().build();
   ResteasyWebTarget target = client.target(usersRequest.getUrl());
   Response  response = null;
   if(null != usersRequest.getXmlObject()){
   response =  target.request().accept(MediaType.APPLICATION_XML_TYPE).post(Entity.entity(usersRequest.getXmlObject(),MediaType.TEXT_XML));

   }else{
   response =  target.request().accept(MediaType.APPLICATION_XML_TYPE).get();
           }
   output = response.readEntity(String.class);

But I am ending with below error

java.lang.NoSuchMethodError: javax.ws.rs.core.Response.readEntity(Ljava/lang/Class;)Ljava/lang/Object; at com.alu.ipprd.mdf.soa.portal.integration.restapi.RestAPIUsersFacade.getAuthorizationUserRole(RestAPIUsersFacade.java:212) [mdf-portal-integration-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:57) [mdf-portal-business-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:1) [mdf-portal-business-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.common.business.BaseWorkOrder.submitWorkOrder(BaseWorkOrder.java:75) [mdf-portal-common-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.bean.LoginBean.doLogin(LoginBean.java:907) [classes:] at com.alu.ipprd.bsm.soa.portal.bean.LoginBean.verifyLogged(LoginBean.java:1150) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_79] at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_79] at org.apache.el.parser.AstValue.invoke(AstValue.java:262) [jbossweb-7.0.10.Final.jar:] at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) [jbossweb-7.0.10.Final.jar:] at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:128) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2464) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2116) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:288) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:] at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_79]

I also checked the jar jaxrs-api-3.0.8.Final.jar which contain this class and method also in present even then its not going to resolve. Can any one tell me what i am doing wrong?

EDIT 1:- I restrict Jboss to use resteasy jar by adding following entry in jboss-deployment-structure.xml

<jboss-deployment-structure>
    <deployment>

        <exclusions>
            <module name="org.apache.log4j" />
            <module name="org.jboss.resteasy.resteasy-atom-provider" />
            <module name="org.jboss.resteasy.resteasy-cdi" />
            <module name="org.jboss.resteasy.resteasy-jaxb-provider" />
            <module name="org.jboss.resteasy.resteasy-jaxrs" />
            <module name="org.jboss.resteasy.resteasy-jettison-provider" />
            <module name="org.jboss.resteasy.resteasy-jsapi" />
            <module name="org.jboss.resteasy.resteasy-multipart-provider" />
            <module name="org.jboss.resteasy.resteasy-yaml-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson-provider" />
            <module name="org.javassist" />
        </exclusions>
        <dependencies>
            <module name="javaee.api">
                <imports>
                    <exclude path="org/apache/xml/security/**" />
                </imports>
            </module>

            <module name="org.jboss.resteasy.resteasy-jettison-provider" />
            <module name="org.codehaus.jettison" /> 
        </dependencies>
    </deployment>
</jboss-deployment-structure>
Subodh Joshi
  • 12,717
  • 29
  • 108
  • 202
  • Looks like you still have the same problem. `Response` is a JAX-RS class that is used for both server side and client side. In JAX-RS 1.x there is no standard client side support. With JAX-RS 2.x that's when a client API was added, and methods like `readEntity` were added to the `Response` object to support client calls. So like I said, you are still having the same problem with old classes being loaded – Paul Samsotha Jan 12 '16 at 07:40
  • If you can't get it working, I don't see why you can't just use the 2.3.x version of the RESTeasy library, since you are only need the client. Other application that disabled the old version to upgrade will not affect your application that still uses the old version – Paul Samsotha Jan 12 '16 at 07:41
  • You can see the docs for [2.3.x client api](http://docs.jboss.org/resteasy/docs/2.3.7.Final/userguide/html/RESTEasy_Client_Framework.html). Then just use the older version of the resteasy-client – Paul Samsotha Jan 12 '16 at 07:42
  • @peeskillet Thanks for your suggestion server is using 3.0.8 version – Subodh Joshi Jan 12 '16 at 07:47
  • From what I understand from out conversation yesterday is that the other team that is working on the REST application (which is a different application) is only excluding the old module (like you are doing) not replacing. So the REST application can use the newer version, and your application , which only needs the client can use the old version still. Different applications have different class loaders. – Paul Samsotha Jan 12 '16 at 07:50
  • But anyway, what happens if you also exclude the `javax.ws.rs.api` module? – Paul Samsotha Jan 12 '16 at 07:50
  • @peeskillet Let me try that also – Subodh Joshi Jan 12 '16 at 07:52
  • @peeskillet Even i excluded i got same exception which i posted in question – Subodh Joshi Jan 12 '16 at 08:51
  • @peeskillet Its working – Subodh Joshi Jan 12 '16 at 17:08
  • How did you get it to work? – Paul Samsotha Jan 13 '16 at 02:41
  • @peeskillet I have added that in answer – Subodh Joshi Jan 13 '16 at 07:35

2 Answers2

1

This problems are thrown cause of different version of Resteasy Client implementation between your app and Jboss.

Please see RESTEasy Client + NoSuchMethodError

Community
  • 1
  • 1
Muhammad Suleman
  • 2,892
  • 2
  • 25
  • 33
0

Any how this RESTEasy Client + NoSuchMethodError will help to resolve the issue.As i am using Jboss7.1.0.final server when i unzip resteasy-jaxrs-3.0.8.Final-all it have resteasy-jboss-modules-3.0.8.Final and resteasy-jboss-modules-3.0.8.Final come up with three folder com,javax,org these 3 folder we have to copy and paste to jboss-as-7.1.0.Final\jboss-as-7.1.0.Final\modules

I am copying only resteasy-jboss-modules-3.0.8.Final\org\jboss\resteasy to Jboss server so it was failing.

Community
  • 1
  • 1
Subodh Joshi
  • 12,717
  • 29
  • 108
  • 202
  • @peeskillet Right now i done this in locally .In Production server we are using Jboss EAP. Frankly telling Right now i am not sure What i will do there. – Subodh Joshi Jan 13 '16 at 07:57