Hi,

I'm trying to use UriInfo within my REST webservice to create a dynamic
response URL. If I use @Context UriInfo uriInfo within my method signature
everything is working fine. But since I don't like to mix my business
service interface with REST specific arguments, I would rather like to use
UriInfo as a field with my service class. I tried a couple of CXF systest to
learn how this can be done. I even created my own sample app. All is working
well. But when I try to do the same thing in my much more complex
webapplication I cannot deploy my Service any longer, due to an
IllegalArgumentException caused by injecting my UriInfo field.... :(
I debugged CXF code, to find the place where the injection happens
(org.apache.cxf.jaxrs.utils.InjectionUtils, Line 167, Version 2.7.0), and
all the parameters look OK to me, but still I get an
IllegalArgumentException. I don't know how to solve this issue. Does someone
else knows how to investigate this issue any further?

Best regads.
Jan

Here is my Tomcat log:

20.11.2012 15:35:55 org.apache.catalina.core.StandardContext listenerStart
SCHWERWIEGEND: Exception sending context initialized event to listener
instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'restContainer': Invocation of init method failed; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:605)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)
        at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
        at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
        at
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1099)
        at
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1621)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:201)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
        ... 26 more
Caused by: java.lang.IllegalArgumentException: Can not set
javax.ws.rs.core.UriInfo field
org.apache.syncope.core.rest.controller.RoleControllerImpl.uriInfo to
$Proxy98
        at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
        at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
        at
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
        at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
        at java.lang.reflect.Field.set(Field.java:657)
        at 
org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:167)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:163)
        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:921)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:365)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:391)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:151)
        ... 33 more
20.11.2012 15:35:55 org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext



--
View this message in context: 
http://cxf.547215.n5.nabble.com/IllegalArgumentException-for-UriInfo-context-injection-tp5718839.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to