[ 
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.

Reply via email to