camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem jiang <willem.ji...@gmail.com>
Subject Re: Sharing a solution for discussion
Date Tue, 21 May 2013 02:04:32 GMT
For the Question 1
I just found you create the SOAP message by hand, it could be more easy for you to use camel
soap data format[1].

For the Question 2
What's the javascript looks like, if it is static you can add customer handler to the camel-jetty
endpoint to return the static file to the browser.


[1]http://camel.apache.org/soap.html  

--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Tuesday, May 21, 2013 at 5:47 AM, wagnermarques wrote:

> Willem, I was thinking to start with a simple hardcoded string message first
> because I have a so simple webservice that receive a string and return the
> same string.  
>  
> If this is ok, I will work with real xml instances...
>  
>  
>  
> I found a aproach to do it and if someone have a remark, please help me!!!
> My inspiration was  
> https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-cxf/
>  
> Sorry for the length of the post and much comments, but I am put the
> solution in this way because was so hard to me find and understand a
> solution to create a cxf provider and it can help someone in the future.  
>  
>  
> I would like to ask:
> 1) I am not shure if I still need xslt? Maybe in another moment.
> 2) Could I return javascript to the browser?
>  
>  
>  
>  
>  
>  
>  
>  
> *BELOW IS THE ROUTE*
>  
>  
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:cxf="http://camel.apache.org/schema/cxf"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd
> http://camel.apache.org/schema/cxf
> http://camel.apache.org/schema/cxf/camel-cxf.xsd">
>  
> <cxf:cxfEndpoint id="echoEndpoint"
>  
> serviceClass="org.apache.camel.example.cxf.provider.GreeterProvider"
> address="http://localhost:8282/ode/processes/ProcessoSincrono"
> wsdlURL="wsdl/ProcessoSincronoArtifacts.wsdl"
> endpointName="s:ProcessoSincronoPort"
> serviceName="s:ProcessoSincronoService"
> xmlns:s="br.edu.fzlbpms.teste"/>
>  
> <camelContext xmlns="http://camel.apache.org/schema/spring">
>  
> <route id="FZLBPMS_CAMEL_ROUTE___OrbeonService">  
>  
> <from
> uri="jetty:http://localhost:18181/orbeonservice/pega_dados_do_formulario?sessionSupport=true"/>
 
> <to uri="Handle_App_e_FormTitle_camming_from_orbeonformPROCESSOR"/>
>  
> <setHeader headerName="CamelHttpUri">
>  
> <simple>http://localhost:8282/exist/rest/db/orbeon/fr/${header.fzlbpms_orbeon_app}/${header.fzlbpms_orbeon_form}/data/${header.fzlbpms_orbeon_dataId}/data.xml</simple>
> </setHeader>  
>  
> <log message="----------------------------------"/>
> <log message="before inOut..."/>  
> <log message="### body = ${body}"/>
> <log message="###"/>
> <log message="###"/>
> <log message="###"/>
> <inOut uri="http://doesnt.matter.we/override/it/anyways" />
> <log message="----------------------------------"/>
> <log message="before SOAPMessageProducerPROCESSOR..."/>  
> <log message="### body = ${body}"/>
> <log message="###"/>
> <log message="###"/>
> <log message="###"/>  
> <to uri="SOAPMessageProducerPROCESSOR"/>
> <log message="----------------------------------"/>
> <log message="before SOAPMessageProducerPROCESSOR..."/>  
> <log message="### body = ${body}"/>
> <log message="###"/>
> <log message="###"/>
> <log message="###"/>
> <to uri="cxf:bean:echoEndpoint" />
> <log message="----------------------------------"/>
> <log message="before SOAPMessageConsumerPROCESSOR..."/>  
> <log message="### body = ${body}"/>
> <log message="###"/>
> <log message="###"/>
> <log message="###"/>  
> <to uri="SOAPMessageConsumerPROCESSOR"/>
> <log message="----------------------------------"/>
> <log message="before SOAPMessageConsumerPROCESSOR..."/>  
> <log message="### body = ${body}"/>
> <log message="###"/>
> <log message="###"/>
> <log message="###"/>
>  
> <inOut uri="http://doesnt.matter.we/override/it/anyways" />  
> </route>
> </camelContext>
>  
>  
> <bean id="SOAPMessageConsumerPROCESSOR"
> class="br.edu.fzlbpms.service.orbeon.SOAPMessageConsumerPROCESSOR" />
>  
> <bean id="SOAPMessageProducerPROCESSOR"
> class="br.edu.fzlbpms.service.orbeon.SOAPMessageProducerPROCESSOR" />
>  
> <bean id="Handle_App_e_FormTitle_camming_from_orbeonformPROCESSOR"
> class="br.edu.fzlbpms.service.orbeon.Pega_dados_do_formularioPROCESSOR"
> />
>  
>  
> </beans>
>  
>  
>  
>  
>  
>  
>  
>  
> public class SOAPMessageConsumerPROCESSOR implements Processor {
>  
> /**
> * just prepare to show response in the browser
> */
> public void process(Exchange exchange) throws Exception {
> //SOAPMessage processSOAP = processSOAP(exchange);
> String soapMessageBodyContentAsString =
> SOAPMessageBodyContentAsString(exchange);
> exchange.getIn().setBody(soapMessageBodyContentAsString);
>  
> }
>  
> public String SOAPMessageBodyContentAsString(Exchange exchange){
>  
> SOAPMessage soapMessage =
> (SOAPMessage)exchange.getIn().getBody(List.class).get(0);
> if (soapMessage == null) {
> return "soapMessage was null in the body of the Exchange";
> }
>  
> try {
> SOAPPart sp = soapMessage.getSOAPPart();
> SOAPEnvelope se = sp.getEnvelope();
> SOAPBody sb = se.getBody();
> String requestText = sb.getFirstChild().getTextContent();  
> return requestText;
> } catch (Exception e) {
> e.printStackTrace();
> return "Error in consume soapMessage "+e.getMessage();
> }
>  
> }
>  
> // public SOAPMessage processSOAP(Exchange exchange) {
> //  
> // // Since the Camel-CXF endpoint uses a list to store the
> parameters
> // // and bean component uses the bodyAs expression to get the value
> // // we'll need to deal with the parameters ourself
> // // I DO NOT KNOW IF IT IS TRUE CONSIDERING WHAT WEBSERVICE WHAT I AM
> ACCESSING
> // // BECAUSE IT IS A AXIS2 WEBSERVICE AUTOMATIC CREATED FROM ODE
> // //FOR NOW I WILL JUST IGNORE IT FOR A WILE AND JUST RETURN STRING  
> //  
> // SOAPMessage soapMessage =
> (SOAPMessage)exchange.getIn().getBody(List.class).get(0);
> // if (soapMessage == null) {
> // System.out.println("Incoming null message detected...");
> // return createDefaultSoapMessage("Greetings from Apache
> Camel!!!!", "null");
> // }
> //
> // try {
> // SOAPPart sp = soapMessage.getSOAPPart();
> // SOAPEnvelope se = sp.getEnvelope();
> // SOAPBody sb = se.getBody();
> // String requestText = sb.getFirstChild().getTextContent();
> // System.out.println(requestText);
> // return createDefaultSoapMessage("Greetings from Apache
> Camel!!!!", requestText);
> // } catch (Exception e) {
> // e.printStackTrace();
> // return createDefaultSoapMessage("Greetings from Apache
> Camel!!!!", e.getClass().getName());
> // }
> // }
>  
> }
>  
>  
>  
>  
>  
>  
> package br.edu.fzlbpms.service.orbeon;
>  
> import java.util.List;
>  
> import javax.xml.namespace.QName;
> import javax.xml.soap.MessageFactory;
> import javax.xml.soap.SOAPBody;
> import javax.xml.soap.SOAPBodyElement;
> import javax.xml.soap.SOAPElement;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPException;
> import javax.xml.soap.SOAPMessage;
> import javax.xml.soap.SOAPPart;
>  
> import org.apache.camel.Exchange;
> import org.apache.camel.Processor;
>  
> public class SOAPMessageProducerPROCESSOR implements Processor {
>  
>  
> public void process(Exchange exchange) throws Exception {
> exchange.getIn().setBody(createSimpleHardCodedSoapMessage());
> }
>  
>  
> public SOAPMessage createSimpleHardCodedSoapMessage() {
> try {
>  
> SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
> SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody();
>  
>  
> // QName payloadName = new QName(
> // "http://apache.org/hello_world_soap_http/types", (tager namespace of
> xsd)
> // "greetMeResponse", "ns1");
>  
> QName payloadName = new QName(
> "br.edu.fzlbpms.teste",
> "ProcessoSincronoRequest", "br");
>  
> SOAPBodyElement payload = body.addBodyElement(payloadName);
>  
> SOAPElement message = payload.addChildElement("input");
>  
> message.addTextNode("string_to_echo");
>  
> return soapMessage;
>  
> } catch (SOAPException e) {
> e.printStackTrace();
> throw new RuntimeException(e);
> }
> }
>  
> }
>  
>  
>  
>  
>  
> *THIS IS THE SERVICEMIX LOG*
>  
>  
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 |
> ----------------------------------
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | before inOut...
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ### body =  
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,783 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 |
> ----------------------------------
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | before
> SOAPMessageProducerPROCESSOR...
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ### body =* <form
> xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
> xmlns:xh="http://www.w3.org/1999/xhtml"
> xmlns:ev="http://www.w3.org/2001/xml-events"
> xmlns:xi="http://www.w3.org/2001/XInclude"
> xmlns:saxon="http://saxon.sf.net/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
> xmlns:xbl="http://www.w3.org/ns/xbl"
> xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
> xmlns:version="java:org.orbeon.oxf.common.Version"
> xmlns:sql="http://orbeon.org/oxf/xml/sql"
> xmlns:p="http://www.orbeon.com/oxf/pipeline"
> xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xf="http://www.w3.org/2002/xforms"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:exf="http://www.exforms.org/exf/1-0">
> <section-1>
> <control-1>ihihihihih</control-1>
> <control-3>ihihihihih</control-3>
> </section-1>
> </form>*
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,787 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,788 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 |
> ----------------------------------
> 17:33:11,788 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | before
> SOAPMessageProducerPROCESSOR...
> 17:33:11,788 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ### body =
> *<SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><br:ProcessoSincronoRequest
> xmlns:br="br.edu.fzlbpms.teste"><input>string_to_echo</input></br:ProcessoSincronoRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>*
> 17:33:11,788 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,788 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,789 | INFO | qtp8427326-1908 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,927 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 |
> ----------------------------------
> 17:33:11,928 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | before
> SOAPMessageConsumerPROCESSOR...
> 17:33:11,928 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ### body =*
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><ProcessoSincronoResponse
> xmlns="br.edu.fzlbpms.teste">
> <tns:result xmlns:tns="br.edu.fzlbpms.teste"><input
> xmlns="">string_to_echo</input></tns:result>*
> </ProcessoSincronoResponse></soapenv:Body></soapenv:Envelope>
> 17:33:11,928 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 |
> ----------------------------------
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | before
> SOAPMessageConsumerPROCESSOR...
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ### body =  
> string_to_echo
>  
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
> 17:33:11,929 | INFO | ault-workqueue-1 | BPMS_CAMEL_ROUTE___OrbeonService |
> 90 - org.apache.camel.camel-core - 2.8.0.fuse-07-15 | ###
>  
>  
>  
>  
>  
>  
>  
>  
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/Sharing-a-solution-for-discussion-tp5732560p5732854.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).




Mime
View raw message