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.