You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by sic <si...@naver.com> on 2009/09/16 09:53:25 UTC
Question about cxf-bc and cxf-se with sm-bean
I'm cxf component testing in Servicemix 3.3.1, Windows XP.
As a example of cxf-wsdl-first, it's quite simple that
client -> cxf-bc -> cxf-se
and cxf-se returns response message to the webservice client.
It´s an easy task.
By the way, I wanna add other service(or services) to this structure (e.g.
sm-bean - disposing of business)
so I changed this as following
Webservice client -> cxf-bc -> eip(static routing slip) -> sm-bean
-> cxf-se
The client is soupUI 3.0.1 and send soap message based on the WSDL in
cxf-bc.
In this case, is it impossible that sm-bean receives message from cxf-bc and
sends transformed message
to the cxf-se? or is there better way to operate this logic?
sm-bean code, xbean configuration and result logs are like this
-----------cxfbc xbean.xml-----------------
<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:demows="http://ws.demo/">
<cxfbc:consumer wsdl="classpath:ws_t02.wsdl"
targetService="demows:route-slip"
targetEndpoint="static-routing-slip"
useJBIWrapper="true"
>
<cxfbc:inInterceptors
...(default interceptor)
/>
</cxfbc:consumer>
----------cxfse xbean.xml---------------------
<beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0">
<cxfse:endpoint useJBIWrapper="false" useSOAPEnvelope="false">
<cxfse:pojo>
<bean class="test.ws.HelloImpl" />
</cxfse:pojo>
<cxfse:inInterceptors
...(default interceptor)
/>
</cxfse:endpoint>
</beans>
----------cxfse test.ws.HelloImpl------------------
@WebService
public class HelloImpl {
public String sayHello(String name) {
return "HI ~~ " + name;
}
}
----------eip:static-routing-slip xbean.xml--------------
<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
xmlns:demows="http://ws.demo/"
xmlns:testws="http://ws.test/"
>
<eip:static-routing-slip service="demows:route-slip"
endpoint="static-routing-slip">
<eip:targets>
<eip:exchange-target service="demows:test-bean-su"/>
<eip:exchange-target service="testws:HelloImplService"
endpoint="HelloImplPort" operation="testws:sayHello"/>
</eip:targets>
</eip:static-routing-slip>
</beans>
---------sm-bean(demows:test-bean-su) onMessageExchange
code---------------------
public class TestBean implements MessageExchangeListener {
private DeliveryChannel channel;
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
SourceTransformer st = new SourceTransformer();
NormalizedMessage inMessage = exchange.getMessage("in");
String indata = st.contentToString(inMessage);
NormalizedMessage out = exchange.createMessage();
// suppose that this xml is return message after disposing business
String retData = "<?xml version=\"1.0\" ?>\n"
+ "<root>qwer</root>\r\n";
out.setContent(new StringSource(retData));
exchange.setMessage(out, "out");
channel.send(exchange);
}
}
--------------Logs---------------------------------
INFO - LoggingInInterceptor - Inbound Message
----------------------------
Encoding: UTF-8
Headers: {Content-Length=[287], Host=[10.1.3.28:9090], User-Agent=[Jakarta
Commons-HttpClient/3.1],
accept-encoding=[gzip,deflate], SOAPAction=[""],
content-type=[text/xml;charset=UTF-8]}
Messages:
Message:
Payload: <soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http:
//ws.test/">
<soapenv:Header/>
<soapenv:Body>
<ws:sayHello>
<!--Optional:-->
<arg0>1234qwer</arg0>
</ws:sayHello>
</soapenv:Body>
</soapenv:Envelope>
--------------------------------------
INFO - JBITransportFactory - configuring DeliveryChannel:
org.apache.servicemix.common
.EndpointDeliveryChannel@1ccf0ad
INFO - PhaseInterceptorChain - Interceptor has thrown exception,
unwinding now Message par
t root was not recognized. (Does it exist in service WSDL?)
INFO - LoggingOutInterceptor - Outbound Message
---------------------------
Encoding: UTF-8
Headers:
Messages:
Payload: <ns1:Fault
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>ns1:Client</fau
ltcode><faultstring>Message part root was not recognized. (Does it exist in
service WSDL?)</faultst
ring></ns1:Fault>
--------------------------------------
WARN - SimpleEndpoint - SimpleEndpoint.fail called:
INFO - PhaseInterceptorChain - Interceptor has thrown exception,
unwinding now Message par
t root was not recognized. (Does it exist in service WSDL?)
INFO - LoggingOutInterceptor - Outbound Message
---------------------------
Encoding: UTF-8
Headers: {}
Messages:
Payload: <soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Faul
t><faultcode>soap:Server</faultcode><faultstring>Message part root was not
recognized. (Does it exi
st in service WSDL?)</faultstring></soap:Fault></soap:Body></soap:Envelope>
--------------------------------------
Additionally I think that the next best way is
Webservice client -> cxf-bc -> eip(static routing slip) -> sm-bean
I wonder if sm-bean receives message from cxf-bc and return response
messages to the client using a cxf-bc interceptor.
--
View this message in context: http://www.nabble.com/Question-about-cxf-bc-and-cxf-se-with-sm-bean-tp25467617p25467617.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Question about cxf-bc and cxf-se with sm-bean
Posted by sic <si...@naver.com>.
cxf-bc -> smx-bean -> cxf-se
I wonder whether this receive soap message of client and return to them
does anybody know it?
-----------cxfbc ws_t02.wsdl--------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloImplService" targetNamespace="http://ws.demo/"
xmlns:tns="http://ws.demo/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://ws.demo/" elementFormDefault="unqualified"
targetNamespace="http://ws.demo/" version="1.0">
...(omit)
<wsdl:service name="HelloImplService">
<wsdl:port name="HelloImplPort"
binding="tns:HelloImplServiceSoapBinding">
<soap:address location="http://localhost:9090/HelloImplPort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
sic wrote:
>
> I'm cxf component testing in Servicemix 3.3.1, Windows XP.
> As a example of cxf-wsdl-first, it's quite simple that
> client -> cxf-bc -> cxf-se
> and cxf-se returns response message to the webservice client.
> It´s an easy task.
>
> By the way, I wanna add other service(or services) to this structure (e.g.
> sm-bean - disposing of business)
> so I changed this as following
> Webservice client -> cxf-bc -> eip(static routing slip) -> sm-bean
>
> -> cxf-se
>
> The client is soupUI 3.0.1 and send soap message based on the WSDL in
> cxf-bc.
> In this case, is it impossible that sm-bean receives message from cxf-bc
> and sends transformed message
> to the cxf-se? or is there better way to operate this logic?
> sm-bean code, xbean configuration and result logs are like this
>
> -----------cxfbc xbean.xml-----------------
> <beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
> xmlns:demows="http://ws.demo/">
> <cxfbc:consumer wsdl="classpath:ws_t02.wsdl"
> targetService="demows:route-slip"
> targetEndpoint="static-routing-slip"
> useJBIWrapper="true"
> >
> <cxfbc:inInterceptors
> ...(default interceptor)
> />
> </cxfbc:consumer>
> ----------eip:static-routing-slip xbean.xml--------------
> <beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
> xmlns:demows="http://ws.demo/"
> xmlns:testws="http://ws.test/"
>>
>
> <eip:static-routing-slip service="demows:route-slip"
> endpoint="static-routing-slip">
> <eip:targets>
> <eip:exchange-target service="demows:test-bean-su"/>
> <eip:exchange-target service="testws:HelloImplService"
> endpoint="HelloImplPort" operation="testws:sayHello"/>
> </eip:targets>
> </eip:static-routing-slip>
> </beans>
> ---------sm-bean(demows:test-bean-su) onMessageExchange
> code---------------------
> public class TestBean implements MessageExchangeListener {
>
> private DeliveryChannel channel;
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
>
> SourceTransformer st = new SourceTransformer();
> NormalizedMessage inMessage = exchange.getMessage("in");
> String indata = st.contentToString(inMessage);
> NormalizedMessage out = exchange.createMessage();
> // suppose that this xml is return message after disposing business
> String retData = "<?xml version=\"1.0\" ?>\n"
> + "<root>qwer</root>\r\n";
> out.setContent(new StringSource(retData));
> exchange.setMessage(out, "out");
> channel.send(exchange);
> }
> }
> ----------cxfse xbean.xml---------------------
> <beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0">
> <cxfse:endpoint useJBIWrapper="false" useSOAPEnvelope="false">
> <cxfse:pojo>
> <bean class="test.ws.HelloImpl" />
> </cxfse:pojo>
> <cxfse:inInterceptors
> ...(default interceptor)
> />
> </cxfse:endpoint>
> </beans>
> ----------cxfse test.ws.HelloImpl------------------
> @WebService
> public class HelloImpl {
>
> public String sayHello(String name) {
> return "HI ~~ " + name;
> }
> }
> --------------Logs---------------------------------
> INFO - LoggingInInterceptor - Inbound Message
> ----------------------------
> Encoding: UTF-8
> Headers: {Content-Length=[287], Host=[10.1.3.28:9090], User-Agent=[Jakarta
> Commons-HttpClient/3.1],
> accept-encoding=[gzip,deflate], SOAPAction=[""],
> content-type=[text/xml;charset=UTF-8]}
> Messages:
> Message:
>
> Payload: <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http:
> //ws.test/">
> <soapenv:Header/>
> <soapenv:Body>
> <ws:sayHello>
> <!--Optional:-->
> <arg0>1234qwer</arg0>
> </ws:sayHello>
> </soapenv:Body>
> </soapenv:Envelope>
> --------------------------------------
> INFO - JBITransportFactory - configuring DeliveryChannel:
> org.apache.servicemix.common
> .EndpointDeliveryChannel@1ccf0ad
> INFO - PhaseInterceptorChain - Interceptor has thrown exception,
> unwinding now Message par
> t root was not recognized. (Does it exist in service WSDL?)
> INFO - LoggingOutInterceptor - Outbound Message
> ---------------------------
> Encoding: UTF-8
> Headers:
> Messages:
> Payload: <ns1:Fault
> xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>ns1:Client</fau
> ltcode><faultstring>Message part root was not recognized. (Does it exist
> in service WSDL?)</faultst
> ring></ns1:Fault>
> --------------------------------------
> WARN - SimpleEndpoint - SimpleEndpoint.fail called:
> INFO - PhaseInterceptorChain - Interceptor has thrown exception,
> unwinding now Message par
> t root was not recognized. (Does it exist in service WSDL?)
> INFO - LoggingOutInterceptor - Outbound Message
> ---------------------------
> Encoding: UTF-8
> Headers: {}
> Messages:
> Payload: <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Faul
> t><faultcode>soap:Server</faultcode><faultstring>Message part root was not
> recognized. (Does it exi
> st in service
> WSDL?)</faultstring></soap:Fault></soap:Body></soap:Envelope>
> --------------------------------------
>
> Additionally I think that the next best way is
> Webservice client -> cxf-bc -> eip(static routing slip) -> sm-bean
> I wonder if sm-bean receives message from cxf-bc and return response
> messages to the client using a cxf-bc interceptor.
>
--
View this message in context: http://www.nabble.com/Question-about-cxf-bc-and-cxf-se-with-sm-bean-tp25467617p25483317.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.