2
votes

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>
2
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
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
You can see the docs for 2.3.x client api. Then just use the older version of the resteasy-client - Paul Samsotha
@peeskillet Thanks for your suggestion server is using 3.0.8 version - Subodh Joshi
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

2 Answers

1
votes

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

Please see RESTEasy Client + NoSuchMethodError

0
votes

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.