CXF-BC Component isn't JBI conform
----------------------------------
Key: SMXCOMP-660
URL: https://issues.apache.org/activemq/browse/SMXCOMP-660
Project: ServiceMix Components
Issue Type: Bug
Components: servicemix-cxf-bc
Affects Versions: servicemix-cxf-bc-2009.01
Reporter: Christian Connert
Priority: Critical
Hi,
I just noticed that the CXF-BC Component ain't standard conform. There are
several problems:
1.) The JbiInInterceptor is supposed to write the (soap) headers to the
NormalizedMessage (javax.jbi.messaging.protocol.headers). Accordingly to the
JBI Spec. the headers should be stored within a
Map<String,org.w3c.dom.DocumentFragment>. But in fact the JbiInInterceptor just
puts the header.getObject() in the map. Which results in a ClassCastException
in other components (like JMS). The objects are some DOM ElementImpl.
2.) I'm very unhappy with the fix
(https://issues.apache.org/activemq/browse/SMXCOMP-203 states) which removes
the WS-Security header from the propagated headers. It's not necessary that the
security is implemented with cxf. Thus I think that this fix is not correct. It
would be better to e.g. use some other saaj implementation (for instance
axis2). Further it might help to at some xerces jar into the class path, but I
haven't tested it yet.
3.) If useJBIWrapper==true the JbiInWsdl1Interceptor warps the message within
JBI parts. That is correct. If headers are specified in the WSDL then these
headers are added as separate parts. But it never removes the headers, which
where added as part, from the SoapMessage, thus the JbiInInterceptor will put
them into the javax.jbi.messaging.protocol.headers map. I think this is not
like it should be. Servicemix soap does remove the headers form the underlying
message and only puts unspecified (not part of the WSDL) headers into the
javax.jbi.messaging.protocol.headers map.
kind regards
Christian
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.