William,
This is an interesting observation and may explain some other issues
we've seen. Definitely log a bug.
Specifically, for the incoming chain, the client does:
List<Interceptor> i1 = bus.getInInterceptors();
List<Interceptor> i2 = endpoint.getInInterceptors();
List<Interceptor> i3 = this.getInInterceptors();
List<Interceptor> i4 = endpoint.getBinding().getInInterceptors();
Basically, bus+endpoint+client+binding
The fault is bus+endpoint+binding+service.
Both should definitely be the same and probably should be all 5:
bus+client+endpoint+binding+service.
(I need to think about the order a little bit more, but both should be
consistent)
Dan
On Thursday 24 April 2008, William Tam wrote:
> In AbstractFeature.initialize methods, unlike the "initialize server"
> counterpart, the initialize method for client is not passing
> client.getEndpoint() to the initializeProvider() method.
>
> public abstract class AbstractFeature {
> public void initialize(Server server, Bus bus) {
> initializeProvider(server.getEndpoint(), bus);
> }
>
> public void initialize(Client client, Bus bus) {
> initializeProvider(client, bus);
> }
>
> As a result, adding InFault interceptors to the (client) provider
> inside the initializeProvider() method does not really end up putting
> them in the fault interceptor chain since the
> InFaultChainInitiatorObserver.initializeInterceptors() method only
> looks for inFault interceptors in the following places.
>
> protected void initializeInterceptors(Exchange ex,
> PhaseInterceptorChain chain) {
> Endpoint e = ex.get(Endpoint.class);
>
> chain.add(e.getInFaultInterceptors());
> chain.add(e.getBinding().getInFaultInterceptors());
> chain.add(e.getService().getInFaultInterceptors());
> chain.add(getBus().getInFaultInterceptors());
> }
>
> I can enter a Jira.
>
> Thanks,
> William
--
J. Daniel Kulp
Principal Engineer, IONA
[EMAIL PROTECTED]
http://www.dankulp.com/blog