You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Seong Hoon Kim <sh...@gmail.com> on 2013/05/31 08:29:48 UTC

Asynchronous Method Dispatch in CXF?

I am planning to implement a set of services based on CXF.
What I know is when the function (i.e., method) is invoked at a server side,
the response message is sent to the client immediately after the function
returns.

Unlike this, I need to use asynchronous method dispatch (see below) at a
intermediate dispatcher.
client -> intermediate dispatcher -> actual server
client <- intermediate dispatcher <- actual server
http://en.wikipedia.org/wiki/Asynchronous_method_dispatch
<http://en.wikipedia.org/wiki/Asynchronous_method_dispatch>  

That is, I want to know whether there is a way of sending the response later
but not immediately after the function returns.

Thank you in advance.





--
View this message in context: http://cxf.547215.n5.nabble.com/Asynchronous-Method-Dispatch-in-CXF-tp5728564.html
Sent from the cxf-user mailing list archive at Nabble.com.

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)
>


Problem including @Context

Posted by Nic Fellows <ni...@thebookpeople.co.uk>.
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: Asynchronous Method Dispatch in CXF?

Posted by Andrei Shakirin <as...@talend.com>.
Hi,

You can use @UseAsyncMethod annotation available since CXF 2.6.0: http://cxf.apache.org/docs/annotations.html .
If transport supports it, CXF will use async version of the method, if not - sync version will be invoked.

Regards,
Andrei.

> -----Original Message-----
> From: Seong Hoon Kim [mailto:shkim1980@gmail.com]
> Sent: Freitag, 31. Mai 2013 08:30
> To: users@cxf.apache.org
> Subject: Asynchronous Method Dispatch in CXF?
> 
> 
> I am planning to implement a set of services based on CXF.
> What I know is when the function (i.e., method) is invoked at a server side,
> the response message is sent to the client immediately after the function
> returns.
> 
> Unlike this, I need to use asynchronous method dispatch (see below) at a
> intermediate dispatcher.
> client -> intermediate dispatcher -> actual server client <- intermediate
> dispatcher <- actual server
> http://en.wikipedia.org/wiki/Asynchronous_method_dispatch
> <http://en.wikipedia.org/wiki/Asynchronous_method_dispatch>
> 
> That is, I want to know whether there is a way of sending the response later
> but not immediately after the function returns.
> 
> Thank you in advance.
> 
> 
> 
> 
> 
> --
> View this message in context:
> http://cxf.547215.n5.nabble.com/Asynchronous-Method-Dispatch-in-CXF-
> tp5728564.html
> Sent from the cxf-user mailing list archive at Nabble.com.

Re: Asynchronous Method Dispatch in CXF?

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi

You can use CXF-specific Continuations API, this will work for both JAX-WS
& JAX-RS,
for example:

http://svn.apache.org/repos/asf/cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/http_jetty/continuations/
(WS), the same approach (in the server code) will work for RS

If it is JAX-RS, then using JAX-RS 2.0 AsyncResponse will help:
http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookContinuationStore.java

Let me know if you have some questions,
Sergey




On Fri, May 31, 2013 at 7:29 AM, Seong Hoon Kim <sh...@gmail.com> wrote:

>
> I am planning to implement a set of services based on CXF.
> What I know is when the function (i.e., method) is invoked at a server
> side,
> the response message is sent to the client immediately after the function
> returns.
>
> Unlike this, I need to use asynchronous method dispatch (see below) at a
> intermediate dispatcher.
> client -> intermediate dispatcher -> actual server
> client <- intermediate dispatcher <- actual server
> http://en.wikipedia.org/wiki/Asynchronous_method_dispatch
> <http://en.wikipedia.org/wiki/Asynchronous_method_dispatch>
>
> That is, I want to know whether there is a way of sending the response
> later
> but not immediately after the function returns.
>
> Thank you in advance.
>
>
>
>
>
> --
> View this message in context:
> http://cxf.547215.n5.nabble.com/Asynchronous-Method-Dispatch-in-CXF-tp5728564.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>



-- 
Sergey Beryozkin

http://sberyozkin.blogspot.com
Talend - http://www.talend.com