Hi,
So I suppose that there is a bug in InjectionUtils class, the jsr339
classloader is used for new ThreadLocalProxy so changed a little bit
implementation:
ClassLoader classLoader = ThreadLocalProxy.class.isAssignableFrom(type) ?
type
.getClassLoader() :
ThreadLocalProxy.class.getClassLoader();
return (ThreadLocalProxy<T>) Proxy
.newProxyInstance(classLoader, new Class[]{type,
ThreadLocalProxy.class},
new ThreadLocalInvocationHandler<T>());
After this I was able to inject ResourceInfo or ResourceContext classes,
but overall it didn't resolve my problem which is determine target Method
in filter.
ResourceInfo after injection was null.
Also tried this:
JAXRSUtils.getCurrentMessage().getExchange().get(OperationResourceInfo.class)
but it's also null.
When I tried to use ResourceContext then in runtime I got:
java.lang.NullPointerException
at
org.apache.cxf.jaxrs.impl.ResourceContextImpl.<init>(ResourceContextImpl.java:36)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.createContextValue(JAXRSUtils.java:1076)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextFields(InjectionUtils.java:977)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContexts(InjectionUtils.java:946)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.runContainerRequestFilters(JAXRSUtils.java:1626)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:104)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:76)[90:org.apache.cxf.cxf-rt-frontend-jaxrs:3.0.0]
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)[91:org.apache.cxf.cxf-core:3.0.0]
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[91:org.apache.cxf.cxf-core:3.0.0]
at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:575)[102:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0]
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[232:org.ops4j.pax.web.pax-web-jetty:3.1.0]
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[232:org.ops4j.pax.web.pax-web-jetty:3.1.0]
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:77)[232:org.ops4j.pax.web.pax-web-jetty:3.1.0]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.Server.handle(Server.java:370)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[222:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_06]
2014-07-04 15:27:08,326 | WARN | tp1790679978-170 | PhaseInterceptorChain
| 91 - org.apache.cxf.cxf-core - 3.0.0 | Exception in
handleFault on interceptor
org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor@5e64b67
org.apache.cxf.interceptor.Fault
at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:76)[91:org.apache.cxf.cxf-core:3.0.0]
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:371)[91:org.apache.cxf.cxf-core:3.0.0]
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[91:org.apache.cxf.cxf-core:3.0.0]
at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)[96:org.apache.cxf.cxf-rt-transports-http:3.0.0]
at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java..
Thanks,
Krzysztof Nowicki
2014-07-04 16:42 GMT+02:00 Sergey Beryozkin <[email protected]>:
> Hi
>
> So the problem is here:
>
>
> > Caused by: java.lang.IllegalArgumentException: interface
> > org.apache.cxf.jaxrs.impl.tl.ThreadLocalProxy is not visible from class
> > loader
> > at java.lang.reflect.Proxy.getProxyClass(Proxy.java:373)
> > at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:601)
>
> and we have SpringDM.
>
> The JAX-RS frontend pom exports 'org.apache.cxf.jaxrs*'
>
> So I'm not sure why org.apache.cxf.jaxrs.impl.tl.ThreadLocalProxy would
> not be visible :-)
>
> Dan, do you have an idea why it might be the case ?
>
> Thanks, Sergey
>
>
> On 04/07/14 13:15, Krzysztof Nowicki wrote:
>
>> Hi,
>>
>> Can you help me with following issue, it occurs when I'm trying inject
>> ResourceInfo into filter:
>>
>> Exception in thread "SpringOsgiExtenderThread-116"
>> org.springframework.beans.factory.BeanCreationException: Error creating
>> bean with name 'oAuthServer': Invocation of init method failed; nested
>> exception is org.apache.cxf.service.factory.ServiceConstructionException
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.createBean(AbstractAutowireCapableBeanFactory.java:458)
>> at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.
>> getObject(AbstractBeanFactory.java:295)
>> at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.
>> getSingleton(DefaultSingletonBeanRegistry.java:223)
>> at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(
>> AbstractBeanFactory.java:292)
>> at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
>> AbstractBeanFactory.java:194)
>> at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.
>> preInstantiateSingletons(DefaultListableBeanFactory.java:628)
>> at
>> org.springframework.context.support.AbstractApplicationContext.
>> finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
>> at
>> org.springframework.osgi.context.support.AbstractDelegatedExecutionAppl
>> icationContext.access$1600(AbstractDelegatedExecutionAppl
>> icationContext.java:69)
>> at
>> org.springframework.osgi.context.support.AbstractDelegatedExecutionAppl
>> icationContext$4.run(AbstractDelegatedExecutionAppl
>> icationContext.java:355)
>> at
>> org.springframework.osgi.util.internal.PrivilegedUtils.
>> executeWithCustomTCCL(PrivilegedUtils.java:85)
>> at
>> org.springframework.osgi.context.support.AbstractDelegatedExecutionAppl
>> icationContext.completeRefresh(AbstractDelegatedExecutionAppl
>> icationContext.java:320)
>> at
>> org.springframework.osgi.extender.internal.dependencies.startup.
>> DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(
>> DependencyWaiterApplicationContextExecutor.java:132)
>> at java.lang.Thread.run(Thread.java:722)
>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>> at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(
>> JAXRSServerFactoryBean.java:210)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(
>> NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:601)
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
>> at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
>> ... 14 more
>> Caused by: java.lang.IllegalArgumentException: interface
>> org.apache.cxf.jaxrs.impl.tl.ThreadLocalProxy is not visible from class
>> loader
>> at java.lang.reflect.Proxy.getProxyClass(Proxy.java:373)
>> at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:601)
>> at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.createThreadLocalProxy(
>> InjectionUtils.java:975)
>> at
>> org.apache.cxf.jaxrs.model.AbstractResourceInfo.getFieldThreadLocalProxy(
>> AbstractResourceInfo.java:142)
>> at
>> org.apache.cxf.jaxrs.model.AbstractResourceInfo.findContextFields(
>> AbstractResourceInfo.java:124)
>> at
>> org.apache.cxf.jaxrs.model.AbstractResourceInfo.findContexts(
>> AbstractResourceInfo.java:82)
>> at
>> org.apache.cxf.jaxrs.model.AbstractResourceInfo.<init>(
>> AbstractResourceInfo.java:76)
>> at
>> org.apache.cxf.jaxrs.model.ProviderInfo.<init>(ProviderInfo.java:38)
>> at
>> org.apache.cxf.jaxrs.model.ProviderInfo.<init>(ProviderInfo.java:32)
>> at
>> org.apache.cxf.jaxrs.provider.ProviderFactory.prepareProviders(
>> ProviderFactory.java:1242)
>> at
>> org.apache.cxf.jaxrs.provider.ServerProviderFactory.setProviders(
>> ServerProviderFactory.java:216)
>> at
>> org.apache.cxf.jaxrs.provider.ProviderFactory.setUserProviders(
>> ProviderFactory.java:766)
>> at
>> org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setupFactory(
>> AbstractJAXRSFactoryBean.java:322)
>> at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setupFactory(
>> JAXRSServerFactoryBean.java:228)
>> at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(
>> JAXRSServerFactoryBean.java:173)
>> ... 21 more
>>
>>
>> Thanks,
>>
>> Krzysztof Nowicki
>>
>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>
> Blog: http://sberyozkin.blogspot.com
>