There really are two options:
1) You can add the interceptors to the individual services that are deployed
on the servlet. Each "<jaxws:endpoint>" has inInterceptor configuration as
well. If there are only a few services, that's probably the easiest.
2) You can create a second Bus and reset the default bus for the thread around
the client/dispatch creation calls. Kind of like:
private Bus clientBus = BusFactory.newInstance().createBus();
...
Bus orig = BusFactory.getThreadDefaultBus();
try {
BusFactory.setThreadDefaultBus(clientBus);
... do all the dispatch stuff ...
} finally {
// set back the orig which should be the Bus that the servlet is using
BusFactory.setThreadDefaultBus(orig);
}
Dan
On Mon June 15 2009 6:39:18 pm Kevin Conaway wrote:
> My application both receives incoming web service requests using the CXF
> Servlet over Jetty and makes outgoing web service requests using the JAX-WS
> dynamic dispatch API.
>
> I have an "in" interceptor that I would like to be invoked only on
> requests that come over the CXF Servlet. However, the way I have it
> configured ensures that it gets called by both incoming requests and the
> response from outgoing JAX-WS dynamic dispatch calls:
>
> <cxf:bus>
> <cxf:inInterceptors>
> <bean class="com.mycompany.MyInterceptor"/>
> </cxf:inInterceptors>
> </cxf:bus>
>
> Is there a way to configure the interceptor in Spring to only be applied to
> incoming web service calls over the CXF servlet?
>
> Thanks
--
Daniel Kulp
[email protected]
http://www.dankulp.com/blog