You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Christian Connert (JIRA)" <ji...@apache.org> on 2009/10/27 09:09:54 UTC

[jira] Updated: (SMXCOMP-660) CXF-BC Component isn't JBI conform

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