org.jboss.resteasy.spi.UnhandledException: java.lang.AbstractMethodError: javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;

JBoss Issue Tracker | Václav Chalupa | 1 year ago
tip
Click on the to mark the solution that helps you, Samebug will learn from it.
As a community member, you’ll be rewarded for you help.
  1. 0

    There are two versions of {{javax.ws.rs}} package exported: {{exports | grep javax.ws.rs}}: * *2.0.0* by *Apache ServiceMix :: Specs :: JSR-339 API 2.0 (2.5.0)* * *1.1.1* by *jsr311-api (1.1.1)* When {{switchyard-rest}} feature installed, the {{switchyard-component-resteasy}} imports the version *2.0.0* provided by Apache ServiceMix. BUT, the {{switchyard-component-resteasy}} uses {{resteasy-jaxrs_2.3.10.Final}}, and this version of RestEasy does not support JAX-RS 2.0, only the prev version. The are cooperating two incompatible version of JAX-RS. It leads to {{java.lang.AbstractMethodError}} when JAX-RS 2.0 classes tries to call methods on JAX-RS 1.0 classes form RestEasy. You can see the error when you crate own implementation of {{RESTEasyMessageComposer}} and in the {{decompose}} method throws {{WebApplicationException}}: {code:java} public class AuthenticatedServiceRestComposer extends RESTEasyMessageComposer { @Override public RESTEasyBindingData decompose(Exchange exchange, RESTEasyBindingData target) throws Exception { throw new WebApplicationException( Response.status(Response.Status.UNAUTHORIZED) .entity(he.toString()) .type(MediaType.TEXT_PLAIN) .build() ); } } {code} The {{WebApplicationException}} is then from JAX-RS 2.0.0, {{Response}} is {{ServerResponse}} created by RESTEasy, so it is from JAX-RS 1.1.1. The resulting exception: {code} org.jboss.resteasy.spi.UnhandledException: java.lang.AbstractMethodError: javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType; at org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:364) at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:232) at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:208) at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:556) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) at org.switchyard.component.resteasy.osgi.OsgiRESTEasyServletWrapper.service(OsgiRESTEasyServletWrapper.java:74) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503) at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.AbstractMethodError: javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType; at javax.ws.rs.WebApplicationException.computeExceptionMessage(WebApplicationException.java:205) at javax.ws.rs.WebApplicationException.<init>(WebApplicationException.java:179) at javax.ws.rs.WebApplicationException.<init>(WebApplicationException.java:88) at org.jboss.soa.qa.securitypolicy.composers.AuthenticatedServiceRestComposer.decompose(AuthenticatedServiceRestComposer.java:18) at org.switchyard.component.resteasy.composer.RESTEasyMessageComposer.decompose(RESTEasyMessageComposer.java:30) at org.switchyard.component.resteasy.InboundHandler.invoke(InboundHandler.java:146) at org.switchyard.component.resteasy.util.RESTEasyProxy.invoke(RESTEasyProxy.java:120) at com.sun.proxy.$Proxy111.processAuthenticated(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168) at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541) {code}

    JBoss Issue Tracker | 1 year ago | Václav Chalupa
    org.jboss.resteasy.spi.UnhandledException: java.lang.AbstractMethodError: javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;

    Root Cause Analysis

    1. java.lang.AbstractMethodError

      javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;

      at javax.ws.rs.WebApplicationException.computeExceptionMessage()
    2. JavaEE 7
      WebApplicationException.computeExceptionMessage
      1. javax.ws.rs.WebApplicationException.computeExceptionMessage(WebApplicationException.java:205)
      1 frame