You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by DavidSigh <lu...@gmail.com> on 2009/01/30 01:48:40 UTC
CXF Provider External Webservice Call
Hi guys,
I'm a SM newbee and just playing around a little bit with the capabilities
of ServiceMix. For better understand the components that are used in SM I
have developed a small case study that deals with a orderFood Szenario in a
restaurant.
My intension is to:
1. A "food" order message should send to an external Webservice (kitchen
order client: KOC) for furhter processing.
2. The listening CXF Webservice is deployed on an Tomcat Server (generated
by STP and CXF) and is alread tested seperatly (SoapUI)
so the message flow is:
EIP Router -->EIP Splitter --->EIP Pipeline
--->CXF BC -->Webservice
4. The Response of the Webservice should be passed to a Simple
Bean(SimpleConsumer). In my current config with the SimpleConsumer Bean has
already some output (I guess the message that should be the request for the
Webservice)
The message coming from the Splitter looks like this.
---------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper"
xmlns:cos="http://ps.com/COS/" xmlns:kit="http://ps.com/kitchen/">
<jbi:part>
<kit:foods>
<tableNumber>1</tableNumber>
<orderID>1</orderID>
<timestamp>1</timestamp>
<id>1</id>
<name>reis</name>
<price>3</price>
<quantity/>
</kit:foods>
</jbi:part>
</jbi:message>
------------------------------------------------------------
Since I have already tranformed the message beforhand I have added
jbi:message and jbi:parts envelops to the the plain xml using xslt to comply
with JBI NMR. (Maybe the message is not valid for process it in the CXF
BC???)
My problem:
Unfortunatly the Webservice is not invoked from the cxf:provider and I
seriously don't have a guess whats the problem (no error messsages).
Do you have any idea what's the problem or where are the errors in my
configuration (or maybe some good samples for my scenario)
I really appreciate your help.
Thanks Dave
Here some snippet of my configuration files:
----EIP Router----
So the message flow will be.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
xmlns:kit="http://ps.com/kitchen/"
xmlns:esb="http://esbinaction.com/examples">
<eip:xpath-splitter service="esb:xpathSplitterFoods"
endpoint="endpointSplitterFoods" xpath="/order/foods/food">
<eip:target>
<eip:exchange-target service="esb:KOCServicePipeline" />
</eip:target>
</eip:xpath-splitter>
<eip:xpath-splitter service="esb:xpathSplitterDrinks"
endpoint="endpointSplitterDrinks" xpath="/order/drinks/drink">
<eip:target>
<eip:exchange-target service="esb:outputDrinks" />
</eip:target>
</eip:xpath-splitter>
<eip:pipeline service="esb:KOCServicePipeline"
endpoint="routingServicesEndpoint">
<eip:transformer>
<eip:exchange-target service="kit:KOCService"
operation="kit:foodOrder"/>
</eip:transformer>
<eip:target>
<eip:exchange-target service="esb:simpleComponent" />
</eip:target>
</eip:pipeline>
</beans>
-----------------------------------------------------------
CXF-BC
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:cos="http://ps.com/COS/" xmlns="http://xbean.org/schemas/spring/1.0"
xmlns:esb="http://esbinaction.com/examples"
xmlns:kit="http://ps.com/kitchen/">
<classpath>
<location>.</location>
</classpath>
<cxfbc:provider wsdl="classpath:KOC.wsdl"
locationURI="http://localhost:8090/KOC/services/KOC"
endpoint="KOCSoap"
interfaceName="kit:KOCPortType"
service="kit:KOCService"
useJBIWrapper="false"
/>
-------------------------------------------------------------------------------------
WSDL file:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions name="KOCService" xmlns:osesb="http://ps.com/kitchen/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://ps.com/kitchen/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="unqualified"
targetNamespace="http://ps.com/kitchen/">
<xsd:element name="foods" type="osesb:foodsType" />
<xsd:complexType name="foodsType">
<xsd:sequence>
<xsd:element name="tableNumber" type="xsd:integer" />
<xsd:element name="orderID" type="xsd:integer" />
<xsd:element name="timestamp" type="xsd:string" />
<xsd:element name="id" type="xsd:integer" />
<xsd:element name="name" type="xsd:string" />
<xsd:element name="price" type="xsd:double" />
<xsd:element name="quantity" type="xsd:integer" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="confirm" type="osesb:confirmType" />
<xsd:complexType name="confirmType">
<xsd:sequence>
<xsd:element name="msg" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="foodOrderRequest">
<wsdl:part element="osesb:foods" name="parameters" />
</wsdl:message>
<wsdl:message name="foodOrderResponse">
<wsdl:part element="osesb:confirm" name="parameters" />
</wsdl:message>
<wsdl:portType name="KOCPortType">
<wsdl:operation name="foodOrder">
<wsdl:input message="osesb:foodOrderRequest" />
<wsdl:output message="osesb:foodOrderResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="KOCSoapBinding" type="osesb:KOCPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="foodOrder">
<soap:operation soapAction="http://ps.com/KOC/foodOrder" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="KOCService">
<wsdl:port name="KOCSoap" binding="osesb:KOCSoapBinding">
<soap:address location="http://localhost:8090/KOC/services/KOC" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
---------------------------------------------------------------------------
Thanks for you help
--
View this message in context: http://www.nabble.com/CXF-Provider-External-Webservice-Call-tp21739545p21739545.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: CXF Provider External Webservice Call
Posted by DavidSigh <lu...@gmail.com>.
Thanks Lukasz,
turning on the Debug was a very helpfully hint. I'm currently tracing the
error now
Just for followers, for setting up the Debug I used this links
http://servicemix.apache.org/how-do-i-change-the-logging.html
http://cwiki.apache.org/CXF20DOC/debugging.html
Lukasz Lichota wrote:
>
> try to increase log4j logging,
> set DEBUG level for org.apache.servicemix logger and then the message will
> be logged between each two hops (services like spliiter, pipeline, cxf
> etc.), in this way you can exactly see what is the input for the each of
> your services, this should provide you a lot of information about what
> happens in your flow and will be also good experience for the future play
> with SM ;)
>
>
>
--
View this message in context: http://www.nabble.com/CXF-Provider-External-Webservice-Call-tp21739545p21762438.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: CXF Provider External Webservice Call
Posted by Lukasz Lichota <Lu...@sabre.com>.
try to increase log4j logging,
set DEBUG level for org.apache.servicemix logger and then the message will
be logged between each two hops (services like spliiter, pipeline, cxf
etc.), in this way you can exactly see what is the input for the each of
your services, this should provide you a lot of information about what
happens in your flow and will be also good experience for the future play
with SM ;)
--
View this message in context: http://www.nabble.com/CXF-Provider-External-Webservice-Call-tp21739545p21755046.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.