cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fred Dushin (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-724) Interceptor ordering declared programmatically is being overriden by configuration
Date Tue, 12 Jun 2007 16:58:26 GMT
Interceptor ordering declared programmatically is being overriden by configuration
----------------------------------------------------------------------------------

                 Key: CXF-724
                 URL: https://issues.apache.org/jira/browse/CXF-724
             Project: CXF
          Issue Type: Bug
          Components: Core
         Environment: OS X
            Reporter: Fred Dushin
             Fix For: 2.0


The WSS4JInInterceptor has a dependency on the SAAJInInterceptor, and this is declared programmatically,
in the WSS4JInInterceptor ctor, as follows:

{{{
    public WSS4JInInterceptor() {
        super();

        setPhase(Phase.PRE_PROTOCOL);
        getAfter().add(SAAJInInterceptor.class.getName());
    }
}}}

When I run this interceptor with the following configuration:

{{{
    <jaxws:endpoint name="{http://www.acme.com}GreeterPort" createdFromAPI="true">
         <jaxws:inInterceptors>
             <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
             <ref bean="WSS4JInInterceptor"/>
         </jaxws:inInterceptors>
    </jaxws:endpoint>
}}}

the interceptor fails on line 117 with the error: NO_SAAJ_DOC

And the line of code is:

{{{
            if (doc == null) {
                throw new SoapFault(new Message("NO_SAAJ_DOC", LOG), version.getReceiver());
            }
}}}

Looking at the logs (with full tracing), I see the following interceptor list:

{{{
pre-protocol [WSSJaxBInterceptor, WSSUsernameTokenCredentialsCollector, WSSBinarySecurityTokenCredentialsCollector,
WSS4JInInterceptor, WSSX509CertificateCredentialsCollector, MustUnderstandInterceptor, SOAPHandlerInterceptor,
LogicalHandlerInInterceptor, SAAJInInterceptor]
}}}

For some reason, the SAAJInInterceptor is being placed last in the phase.

If, on the other hand, I /reverse/ the order of definition in config, to read:

{{{
    <jaxws:endpoint name="{http://www.acme.com}GreeterPort" createdFromAPI="true">
         <jaxws:inInterceptors>
             <ref bean="WSS4JInInterceptor"/>
             <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
         </jaxws:inInterceptors>
    </jaxws:endpoint>
}}}

the interceptor list instead reads:

{{{
pre-protocol [WSSJaxBInterceptor, WSSUsernameTokenCredentialsCollector, WSSBinarySecurityTokenCredentialsCollector,
SAAJInInterceptor, WSS4JInInterceptor, WSSX509CertificateCredentialsCollector, MustUnderstandInterceptor,
SOAPHandlerInterceptor, LogicalHandlerInInterceptor]
}}}

and the interceptor functions correctly (because the SAAJInInterceptor is getting called before
the WSS4JInInterceptor.

This bug is being filed in the context of the WSS4JInInterceptor, but it probably applies
to other interceptor types, as well.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message