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

Reply via email to