[
https://issues.apache.org/activemq/browse/SMXCOMP-660?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Connert updated SMXCOMP-660:
--------------------------------------
Attachment: cxfbc.patch
Good morning (at least in Austria),
After a hard hacking weekend i finally fixed the following bugs in the cxf-bc
trunk:
1.) javax.jbi.messaging.protocol.headers are org.w3c.dom.DocumentFragment
fragments now.
2.) SMXCOMP-203 -> transform saaj nodes to org.w3c.dom.Documents and attach as
above
3.) JBI wrapping corrected (removes headers which are serialized as parts)
4.) Header propagation from BC-Provider to BC-Consumer (response) failed (no
headers where propagated)
1 and 2 are fixed inside the JbiInInterceptor.
3 is fixed in the JbiInWsdl1Interceptor
4 is fixed in the CxfBcProvider and CxfBcProviderMessageObserver
(JbiInInterceptor at provider and JbiOutInterceptor at consumer endpoint)
Further I extended the provider and consumer to set custom properties
(Map<String,Object>) for the endpoint (I needed this for WS-Security properties
at a endpoint level).
I also added a extra Interceptor to remove soap headers based on a Set<QName>.
Finally I changed some code a bit to improve performance.
I'm using this extended version in ServiceMix 3.3.1 and it seems to work fine.
I hope the appended patch helps to solve this issues in future releases
Christian
> 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
> Assignee: Freeman Fang
> Priority: Critical
> Attachments: cxfbc.patch
>
>
> 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.