The NPE is throw from the AbstractRmServerTube constructor, which looks like this:
AbstractRmServerTube(Configuration configuration, Tube tubelineHead) {
super(tubelineHead);
this.configuration = configuration;
// TODO don't take the first config alternative automatically...
if (configuration.getAddressingVersion() != AddressingVersion.W3C) {
throw new RmRuntimeException(LocalizationMessages.WSRM_1120_UNSUPPORTED_WSA_VERSION(configuration.getAddressingVersion().toString()));
}
this.sequenceManager = SequenceManagerFactory.INSTANCE.getServerSequenceManager();
this.requestAdapter = null;
}
The problem is that configuration.getAddressingVersion() actually returns null, so the NPE is throw instead of RmRuntimeException (because of the configuration.getAddressingVersion().toString() call).
So I'm now trying to adjust my policy definition in hope that the configuration will pick up a known addressing version.
My original WSDL policy is:
<wsp1:Policy xmlns:wsp1="http://www.w3.org/ns/ws-policy" wsu:Id="SalesOrderProcessingOrderingOutBindingPolicy">
<wsp1:ExactlyOne>
<wsp1:All>
<wsam:Addressing xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" wsp1:Optional="false"/>
<wsrm:RMAssertion xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrmp/200702"/> <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken>
<wsp:Policy>
<sp:RequireClientCertificate/>
</wsp:Policy>
</sp:HttpsToken>
</wsp:Policy>
</sp:TransportToken>
</wsp:Policy>
</sp:TransportBinding>
</wsp1:All>
</wsp1:ExactlyOne>
</wsp1:Policy>