Hi
I guess ReaderInterceptors are really for decorating the input and if
really needed blocking MBRs, but I don't think they are meant to replace
MBRs which is where you will deal with the actual reading.
Cheers, Sergey
On 07/08/13 04:41, ?????? wrote:
Hi,
Thank you very much for your help.
I just wondering if I have to use JAXBContext in a ReaderInterceptor?
Can I use ReaderInterceptor for just I/O operation?
In the document, jsr339-jaxrs-2.0-final-spec, there is an example about
ReaderInterceptor (page 40):
@Provider
class GzipInterceptor implements ReaderInterceptor{
@Override
Object aroundReadFrom(ReaderInterceptorContext ctx) ... {
if (isGzipped(ctx)) {
InputStream old = ctx.getInputStream();
ctx.setInputStream(new GZIPInputStream(old));
try {
return ctx.proceed();
} finally {
ctx.setInputStream(old);
}
} else {
return ctx.proceed();
}
}
...
}
Can I use ReaderInterceptor like this example?
Could you please give me some advice?
Thank you very much!
Sincerely,
Di Ma
------------------ ???????? ------------------
*??????:* "Sergey Beryozkin"<[email protected]>;
*????????:* 2013??8??6??(??????) ????11:30
*??????:* "users"<[email protected]>;
*????:* "??????"<[email protected]>;
*????:* Re: Question about ReaderInterceptor
Hi
Please try the latest 2.7.7-SNAPSHOT, Dan did some related updates to
WS-A related code which might help resolving your issue
Cheers, Sergey
On 06/08/13 10:36, Sergey Beryozkin wrote:
> Hi
>
> This is something to do WS-Addressing related JAXBContext
> initialization, as per the trace below, which can only happen on the WS
> call.
> Do you have some WS-to-RS or RS-to-WS bridge ?
> org.apache.cxf.ws.addressing.v200408.Relationship needs to be resolved
> somehow (I can see it the generated sources).
>
> Cheers, Sergey
>
> On 06/08/13 03:27, ?????? wrote:
>> Hi,
>>
>> I am trying to use ReaderInterceptor, but it seems like it does not
>> work at all, because it even does not work for println();
>>
>> I use apache-cxf-2.7.5,apache-tomcat-6.0.37, Java 6, and set up the
>> ReaderInterceptor as Provider in Spring, Bean.xml.
>>
>> This is my code:
>>
>> @Override
>> public Object aroundReadFrom(ReaderInterceptorContext arg0)
>> throws IOException, WebApplicationException {
>> System.out.println("This is from ReaderInterceptor.");
>> return arg0.proceed();
>> }
>>
>> And there is no message showed.
>>
>> Also, if I try to call the arg0.getHeaders(), there will shows error:
>> Throwable occurred: java.lang.IllegalStateException
>> at
>>
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
>>
>> at
>>
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
>>
>> at java.lang.Class.getDeclaredMethodsImpl(Native Method)
>> at java.lang.Class.getDeclaredMethods(Class.java:748)
>> at
>> com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclare
>> dMethods(ReflectionNavigator.java:262)
>> at
>> com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclare
>> dMethods(ReflectionNavigator.java:59)
>> at
>>
com.sun.xml.internal.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:93)
>>
>> at
>> com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.addRegistry(Mode
>> lBuilder.java:358)
>> at
>> com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(Mode
>> lBuilder.java:328)
>> at
>> com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(J
>> AXBContextImpl.java:444)
>> at
>>
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:291)
>>
>> at
>>
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1128)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:181)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:134)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:229)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
>>
>> at
>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>>
>> at java.lang.reflect.Method.invoke(Method.java:611)
>> at
>> javax.xml.bind.ContextFinder.newInstanceContextFinder.java:139)
>> at javax.xml.bind.ContextFinder.find(ContextFinder.java:301)
>> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:383)
>> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:348)
>> at
>> org.apache.cxf.ws.addressing.VersionTransformerNames200408.getJAXBCo
>> ntext(VersionTransformer.java:543)
>> at
>> org.apache.cxf.ws.addressing.VersionTransformer.getExposedJAXBContext
>> (VersionTransformer.java:482)
>> at
>>
org.apache.cxf.ws.addressing.soap.MAPCodec.unmarshalMAPs(MAPCodec.java:488)
>>
>> at
>> org.apache.cxf.ws.addressing.soap.MAPCodec.decode(MAPCodec.java:674)
>> at
>> org.apache.cxf.ws.addressing.soap.MAPCodec.mediate(MAPCodec.java:171)
>> at
>>
org.apache.cxf.ws.addressing.soap.MAPCodec.handleMessage(MAPCodec.java:121)
>>
>> at
>>
org.apache.cxf.ws.addressing.soap.MAPCodec.handleMessage(MAPCodec.java:78)
>>
>> at
>>
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>>
>> at
>>
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>
>> at
>>
org.apache.cxf.transport.udp.UDPDestination$MCastListener$2.run(UDPDestination.java:106)
>>
>> at
>>
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
>>
>> at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:908)
>>
>> at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:931)
>>
>> at
>>
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
>>
>> at java.lang.Thread.run(Thread.java:773)
>> Exception in thread "default-workqueue-9"
>> ava.lang.NoClassDefFoundError:
>> org.apache.cxf.ws.addressing.v200408.Relationship
>> at java.lang.Class.getDeclaredMethodsImpl(Native Method)
>> at java.lang.Class.getDeclaredMethods(Class.java:748)
>> at
>> com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclare
>> dMethods(ReflectionNavigator.java:262)
>> at
>> com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclare
>> dMethods(ReflectionNavigator.java:59)
>> at
>>
com.sun.xml.internal.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:93)
>>
>> at
>> com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.addRegistry(Mode
>> lBuilder.java:358)
>> at
>> com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(Mode
>> lBuilder.java:328)
>> at
>> com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(J
>> AXBContextImpl.java:444)
>> at
>>
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:291)
>>
>> at
>>
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1128)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:181)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:134)
>>
>> at
>>
com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:229)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.
>> java:60)
>> at
>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>>
>> at java.lang.reflect.Method.invoke(Method.java:611)
>> at
>> javax.xml.bind.ContextFinder.newInstanceContextFinder.java:139)
>> at javax.xml.bind.ContextFinder.find(ContextFinder.java:301)
>> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:383)
>> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:348)
>> at
>>
org.apache.cxf.ws.addressing.VersionTransformer$Names200408.getJAXBContext(VersionTransformer.java:543)
>>
>> at
>> org.apache.cxf.ws.addressing.VersionTransformer.getExposedJAXBContext
>> (VersionTransformer.java:482)
>> at
>>
org.apache.cxf.ws.addressing.soap.MAPCodec.unmarshalMAPs(MAPCodec.java:488)
>>
>> at
>> org.apache.cxf.ws.addressing.soap.MAPCodec.decode(MAPCodec.java:674)
>> at
>> org.apache.cxf.ws.addressing.soap.MAPCodec.mediate(MAPCodec.java:171)
>> at
>>
org.apache.cxf.ws.addressing.soap.MAPCodec.handleMessage(MAPCodec.java:121)
>>
>> at
>> org.apache.cxf.ws.addressing.soap.MAPCodec.handleMessage(MAPCodec.jav
>> a:78)
>> at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
>> orChain.java:271)
>> at
>>
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>
>> at
>>
org.apache.cxf.transport.udp.UDPDestination$MCastListener$2.run(UDPDestination.java:106)
>>
>> at
>>
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
>>
>> at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:908)
>>
>> at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:931)
>>
>> at
>>
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
>>
>> at java.lang.Thread.run(Thread.java:773)
>> Caused by: java.lang.ClassNotFoundException:
>> org.apache.cxf.ws.addressing.v200408.Relationship
>> at
>>
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
>>
>> at
>>
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
>>
>> ... 36 more
>>
>> I am not sure what the problem is. Could you please give me some
>> advice?
>>
>> Thank you very much!
>>
>> Sincerely,
>>
>> Di Ma
>> [email protected]
>>
>
>
> -
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com