hstaudacher / osgi-jax-rs-connector

An OSGi - JAX-RS 2.0 Connector, software repository available on the link below
http://hstaudacher.github.io/osgi-jax-rs-connector
Other
190 stars 98 forks source link

LinkageError with "javax/ws/rs/container/ContainerRequestContext" when implementing AuthenticationHandler and AuthorizationHandler #94

Closed mdurand76 closed 9 years ago

mdurand76 commented 9 years ago

I built a bundle following the security example in com.eclipsesource.jaxrs.security.example and tried to deploy it in Karak 3.0.3 (I also deployed jersey-all). When trying to hit the REST service, I get this exception:

2015-04-21 09:20:45,496 | WARN  | qtp742969852-53  | ServletHandler                   | 57 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "javax/ws/rs/container/ContainerRequestContext"
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:421)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:222)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[66:org.ops4j.pax.web.pax-web-jetty:3.1.4]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[66:org.ops4j.pax.web.pax-web-jetty:3.1.4]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[66:org.ops4j.pax.web.pax-web-jetty:3.1.4]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.Server.handle(Server.java:370)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
Caused by: org.glassfish.jersey.server.ContainerException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "javax/ws/rs/container/ContainerRequestContext"
    at org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:256)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:238)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:483)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:313)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:288)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1110)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:401)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    ... 29 more
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "javax/ws/rs/container/ContainerRequestContext"
    at org.colly.osgi.demo.rest.impl.AuthcHandler.authenticate(AuthcHandler.java:18)
    at com.eclipsesource.jaxrs.provider.security.impl.SecurityAdmin.createSecurityContext(SecurityAdmin.java:38)
    at com.eclipsesource.jaxrs.provider.security.impl.SecurityAdmin.getSecurityContext(SecurityAdmin.java:29)
    at com.eclipsesource.jaxrs.provider.security.impl.ContainerRequestFilterImpl.filter(ContainerRequestFilterImpl.java:36)
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:68)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:297)[78:com.eclipsesource.jaxrs.jersey-all:2.17.0]
    ... 38 more
hstaudacher commented 9 years ago

wow. Never seen this before. @BryanHunt can you reproduce this issue?

BryanHunt commented 9 years ago

I have a demo app I'm working on that uses auth here: https://github.com/BryanHunt/web-in-a-box The demo app runs just fine for me. In the past when I have encountered linkage errors, it was because there were two different versions of the same bundle installed and a referencing bundle was somehow getting two different versions of the same class.

hstaudacher commented 9 years ago

@mdurand76 please verify your installation respecting @BryanHunt advices.

I will close this issue. If it still happens please feel free to reopen it.