Hi,

I want 
  - expose a CXF endpoint "from" via a CXF servlet ==> OK, it works
  - apply a XSLT transformation on the SOAP envelope of a multipart SOAP
message
     retreived via the CXF servlet    ==> KO
  - resend the modified SOAP message via a Web service client 


so , I built a route like this : 
    <cxf:cxfEndpoint id="soapMessageEndpointProvider"
        serviceClass="....MyCxfProvider"
        address="..."
            wsdlURL="..."
            endpointName="s:..."
            serviceName="s:..."
            xmlns:s="..."/>
    <cxf:cxfEndpoint id="soapMessageEndpointProducer"
        serviceClass="????"
       
address="http://localhost:9000/MyFinalServiceProvider/SOAPMessageService";
            wsdlURL="..."
            endpointName="s:..."
            serviceName="s:..."
            xmlns:s="..."/>

     <camelContext id="camel-context" trace="true"
        xmlns="http://activemq.apache.org/camel/schema/spring";>

       <route>
           <from uri="cxf:bean:soapMessageEndpointProvider"/>
           <to uri="xslt:file:///c:/mySheet.xsl"/>
           <to ref="cxf:bean:soapMessageEndpointProducer" />
       <route>
     </camelContext> 

I successfully retreive my message as an instance of SOAPMessage object 

But I have 2 issues:

1: When I add the xslt processor above, I have an error: 
            "org.apache.camel.NoTypeConversionAvailableException : 
             No type converter available to convert 
             from type: class org.apache.camel.component.cxf.CxfMessage 
             to the required type: javax.xml.transform.Source
             ...." 

So I tried to implement my own XSLT processor. 

   I get the SOAP envelope /  SOAP PAYLOAD with:
       SOAPMessage soapMessage =
(SOAPMessage)inMessage.getBody(List.class).get(0);
       SOAPPart sp = soapMessage.getSOAPPart();
       SOAPEnvelope se = sp.getEnvelope();
       SOAPBody sb = se.getBody();
    
    And I would like to do : 
                                                         XSLT
       SOAPEnvelope ==> envelope(XML) ======> transformed envelope(XML) ==>
SOAP envelope

    In that case, my problems are : 
      - how to retreive the XML of my SOAPEnvelope
        (My soap message is a multipart message so I cannot apply the XSLT
transformation on the whole http request)
      - how to re transform my envelop XML in a SOAPEnvelope to continue the
processing as if the XSLT transforamtion did never occur
 
   I know it is probably at the frontier between CAMEL, CXF, JAX-WS and Jaxb
but if you have an idea, it would be very helpfull for me.


2/ my second proble is about the WS endpoint producer 
  With WS consumer Endpoint, it is possible to avoid the use with classes
generated by wsdl2java
   In that case, we use a fake Web Service Provider class (like described in
http://activemq.apache.org/camel/cxf-example.html)

  For Producer Endpoints (WS client), in mode MESSAGE, is it possible to do
the same thing. Iwant to say, is it possible to avoid to add in the
classpath the classes generated by wsdl2java).
   
Thanks.  
Guillaume
-- 
View this message in context: 
http://www.nabble.com/Apply-XSLT-transforrmation-after-a-CXF-Enpoint-fails-tp21216444s22882p21216444.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to