You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Nic Fellows <ni...@thebookpeople.co.uk> on 2013/05/31 16:44:52 UTC
Problem including @Context
I am trying to access the HttpServletResponse in my @Service
I'm at a bit of a loss as to why it wont work, can anyone point me in
the right direction?
Id supply more information but i'm not sure what you will need!
Thanks!
The code is:
@Service("reviewRestService")
@Path("/gabble")
public class DefaultGabbleRestService implements GabbleRestService {
@Context
public HttpServletResponse response;
...
The root exception looks like this:
Caused by:
java.lang.IllegalArgumentException: Can not set javax.servlet.http.HttpServletResponse field uk.co.tbp.gabble.rest.DefaultGabbleRestService.response to com.sun.proxy.$Proxy80
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
at java.lang.reflect.Field.set(Field.java:680)
at org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:171)
at org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:922)
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)
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.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)
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:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
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.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:277)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at uk.co.tbp.gabble.test.RSTest.startServer(RSTest.java:77)
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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Re: Problem including @Context
Posted by Sergey Beryozkin <sb...@gmail.com>.
FYI, I've done a minor update to make sure all of the code needed to set
a field value runs as privileged, which may help in cases like this one.
where CGLIB proxies are used, but working with setters is always a safe
approach too
Cheers, Sergey
On 03/06/13 21:12, Sergey Beryozkin wrote:
> Hi,
>
> what CXF version do you use ? I think the injection code should work ok
> in the later CXFs. An immediate workaround: introduce a setter like
>
> @Context
> public void setHttpServletResponse(HttpServletResponse resp);
>
> and possibly move it to a dedicated interface (to be implemented by the
> resource class)
>
> Thanks, Sergey
>
>
> On 03/06/13 09:15, Nic Fellows wrote:
>> My server setup looks like this, i thought maybe i need to do something
>> differently as my service class is managed by Spring?
>>
>> <!-- REST Server Configuration -->
>>
>> <import resource="classpath:META-INF/cxf/cxf.xml" />
>>
>> <jaxrs:server id="reviewRestServer" address="/">
>>
>> <jaxrs:serviceBeans>
>>
>> <ref bean="reviewRestService" />
>>
>> </jaxrs:serviceBeans>
>>
>> <jaxrs:providers>
>>
>> <ref bean="jsonProvider" />
>>
>> <bean
>> class="uk.co.tbp.gabble.rest.mappers.PersistenceExceptionMapper" />
>>
>> <bean
>> class="uk.co.tbp.gabble.rest.mappers.AuthenticationExceptionMapper" />
>>
>> <bean
>> class="uk.co.tbp.gabble.rest.mappers.AccessDeniedExceptionMapper" />
>>
>> </jaxrs:providers>
>>
>> </jaxrs:server>
>>
>>
>> On 31/05/13 15:44, Nic Fellows wrote:
>>> I am trying to access the HttpServletResponse in my @Service
>>>
>>> I'm at a bit of a loss as to why it wont work, can anyone point me in
>>> the right direction?
>>>
>>> Id supply more information but i'm not sure what you will need!
>>>
>>> Thanks!
>>>
>>>
>>> The code is:
>>>
>>> @Service("reviewRestService")
>>> @Path("/gabble")
>>> public class DefaultGabbleRestService implements GabbleRestService {
>>> @Context
>>> public HttpServletResponse response;
>>> ...
>>>
>>>
>>> The root exception looks like this:
>>>
>>> Caused by:
>>> java.lang.IllegalArgumentException: Can not set
>>> javax.servlet.http.HttpServletResponse field
>>> uk.co.tbp.gabble.rest.DefaultGabbleRestService.response to
>>> com.sun.proxy.$Proxy80
>>> at
>>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
>>>
>>>
>>> at
>>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
>>>
>>>
>>> at
>>> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
>>>
>>>
>>> at
>>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
>>>
>>>
>>> at java.lang.reflect.Field.set(Field.java:680)
>>> at
>>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:171)
>>>
>>>
>>> at
>>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:922)
>>>
>>>
>>> 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)
>>>
>>>
>>> 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.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)
>>>
>>>
>>> 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:609)
>>>
>>>
>>> at
>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
>>>
>>>
>>> at
>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
>>>
>>>
>>> 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.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
>>>
>>>
>>> at
>>> org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
>>>
>>>
>>> at
>>> org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
>>>
>>>
>>> at
>>> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
>>>
>>>
>>> at
>>> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
>>>
>>>
>>> at
>>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>>
>>>
>>> at
>>> org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
>>>
>>>
>>> at org.eclipse.jetty.server.Server.doStart(Server.java:277)
>>> at
>>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>>
>>>
>>> at uk.co.tbp.gabble.test.RSTest.startServer(RSTest.java:77)
>>> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>>
>>>
>>> at
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>>
>>>
>>> at
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>>
>>>
>>> at
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>>>
>>>
>>> at
>>> org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
>>>
>>>
>>> at
>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>>>
>>>
>>> at
>>> org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
>>>
>>>
>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> at
>>> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>>
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>>
>>>
>>>
>>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: Problem including @Context
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi,
what CXF version do you use ? I think the injection code should work ok
in the later CXFs. An immediate workaround: introduce a setter like
@Context
public void setHttpServletResponse(HttpServletResponse resp);
and possibly move it to a dedicated interface (to be implemented by the
resource class)
Thanks, Sergey
On 03/06/13 09:15, Nic Fellows wrote:
> My server setup looks like this, i thought maybe i need to do something
> differently as my service class is managed by Spring?
>
> <!-- REST Server Configuration -->
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
>
> <jaxrs:server id="reviewRestServer" address="/">
>
> <jaxrs:serviceBeans>
>
> <ref bean="reviewRestService" />
>
> </jaxrs:serviceBeans>
>
> <jaxrs:providers>
>
> <ref bean="jsonProvider" />
>
> <bean
> class="uk.co.tbp.gabble.rest.mappers.PersistenceExceptionMapper" />
>
> <bean
> class="uk.co.tbp.gabble.rest.mappers.AuthenticationExceptionMapper" />
>
> <bean
> class="uk.co.tbp.gabble.rest.mappers.AccessDeniedExceptionMapper" />
>
> </jaxrs:providers>
>
> </jaxrs:server>
>
>
> On 31/05/13 15:44, Nic Fellows wrote:
>> I am trying to access the HttpServletResponse in my @Service
>>
>> I'm at a bit of a loss as to why it wont work, can anyone point me in
>> the right direction?
>>
>> Id supply more information but i'm not sure what you will need!
>>
>> Thanks!
>>
>>
>> The code is:
>>
>> @Service("reviewRestService")
>> @Path("/gabble")
>> public class DefaultGabbleRestService implements GabbleRestService {
>> @Context
>> public HttpServletResponse response;
>> ...
>>
>>
>> The root exception looks like this:
>>
>> Caused by:
>> java.lang.IllegalArgumentException: Can not set
>> javax.servlet.http.HttpServletResponse field
>> uk.co.tbp.gabble.rest.DefaultGabbleRestService.response to
>> com.sun.proxy.$Proxy80
>> at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
>>
>> at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
>>
>> at
>> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
>>
>> at
>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
>>
>> at java.lang.reflect.Field.set(Field.java:680)
>> at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:171)
>>
>> at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:922)
>>
>> 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)
>>
>> 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.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)
>>
>> 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:609)
>>
>> at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
>>
>> at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
>>
>> 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.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
>>
>> at
>> org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
>>
>> at
>> org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
>>
>> at
>> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
>>
>> at
>> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
>>
>> at
>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>
>> at
>> org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
>>
>> at org.eclipse.jetty.server.Server.doStart(Server.java:277)
>> at
>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>
>> at uk.co.tbp.gabble.test.RSTest.startServer(RSTest.java:77)
>> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>
>> at
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>
>> at
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>
>> at
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>>
>> at
>> org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
>>
>> at
>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>>
>> at
>> org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
>>
>> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>> at
>> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
>>
>> at
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>
>> at
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>
>> at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>
>> at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>
>> at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>
>> at
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>
>>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: Problem including @Context
Posted by Nic Fellows <ni...@thebookpeople.co.uk>.
My server setup looks like this, i thought maybe i need to do something
differently as my service class is managed by Spring?
<!-- REST Server Configuration -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<jaxrs:server id="reviewRestServer" address="/">
<jaxrs:serviceBeans>
<ref bean="reviewRestService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider" />
<bean class="uk.co.tbp.gabble.rest.mappers.PersistenceExceptionMapper" />
<bean class="uk.co.tbp.gabble.rest.mappers.AuthenticationExceptionMapper" />
<bean class="uk.co.tbp.gabble.rest.mappers.AccessDeniedExceptionMapper" />
</jaxrs:providers>
</jaxrs:server>
On 31/05/13 15:44, Nic Fellows wrote:
> I am trying to access the HttpServletResponse in my @Service
>
> I'm at a bit of a loss as to why it wont work, can anyone point me in
> the right direction?
>
> Id supply more information but i'm not sure what you will need!
>
> Thanks!
>
>
> The code is:
>
> @Service("reviewRestService")
> @Path("/gabble")
> public class DefaultGabbleRestService implements GabbleRestService {
> @Context
> public HttpServletResponse response;
> ...
>
>
> The root exception looks like this:
>
> Caused by:
> java.lang.IllegalArgumentException: Can not set javax.servlet.http.HttpServletResponse field uk.co.tbp.gabble.rest.DefaultGabbleRestService.response to com.sun.proxy.$Proxy80
> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
> at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
> at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
> at java.lang.reflect.Field.set(Field.java:680)
> at org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:171)
> at org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:922)
> 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)
> 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.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)
> 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:609)
> at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
> at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
> 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.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
> at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
> at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
> at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
> at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
> at org.eclipse.jetty.server.Server.doStart(Server.java:277)
> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> at uk.co.tbp.gabble.test.RSTest.startServer(RSTest.java:77)
> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
> at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>