OK. Tried it. Doesn't work. Compiler doesn't allow it. :-(
I'm really cannot think of any way to do this then. Kind of sucky.
Actually, ONE option is to write a different interceptor:
public class MyInterceptor extends AbstractPhaseInterceptor<Message> {
public void handleMessage(Message m) {
if (m instanceof SoapMessage) {
m.getInterceptorChain().add(new MySoapInterceptor());
}
}
}
And add THAT interceptor to the bus and have it run very early in the phase
chain.
Dan
On Mon October 12 2009 10:33:39 am Daniel Kulp wrote:
> I really don't think there is a way to do this. Not that I can think of
> anyway. Hmmmmm......
>
> I'm not sure if you add a method like:
>
> public void handleMessage(Message m) {
> if (m instanceof SoapMessage) {
> handleMessage((SoapMessage)m);
> }
> }
> or similar if the compiler will even allow that. I've never really tried to
> explicitly add a method that that compiler would normally have generated
> for the generic methods. Normally, the compiler auto generates a method
> that does:
> public void handleMessage(Message m) {
> handleMessage((SoapMessage)m);
> }
> Don't know if you can actually provide one so the compiler doesn't need to
> generate one.
>
>
> If that works, I wonder if adding it to AbstractSoapInterceptor would make
> sense to make sure it's only called for soap. Interesting thought.
>
> Dan
>
> On Fri October 9 2009 2:51:40 pm Adam Lewandowski wrote:
> > I've got an application that has both JAX-WS and JAX-RS endpoints. I also
> > have an interceptor that handles custom SOAP headers (extends
> > AbstractSoapInterceptor). I've tried adding the interceptor via the
> > <cxf:bus>/<cxf:inInterceptors> tag in the Spring context but this puts
> > the interceptor at the bus level, which interferes with the JAX-RS
> > endpoints. Invoking a JAX-RS endpoint results in a ClassCastException
> > when it tries to invoke my interceptor's handleMessage(SoapMessage)
> > method with an XMLMessage.
> >
> > Is there a way to add the interceptor to just the SOAP binding, using
> > Spring configuration only? Failing that, how can it be done
> > programatically?
> >
> > Thanks,
> > Adam Lewandowski
>
--
Daniel Kulp
[email protected]
http://www.dankulp.com/blog