Freeman Fang wrote: > > > On 2010-5-30, at 下午11:54, Amigo_ wrote: > >> >> Hi, >> >> I need to invoke external web service from SE. I've generated codes >> for >> client using Apache CXF, but any invocations are blocked by >> servicemix. >> >> I've searched this forum and I've read that there should a binding >> component >> between my SE and WS, but I can hardly find any tutorials. I will be >> very >> glad if someone could post any links to tutorials or just clues >> explaining >> how to ensure communication with external ws over servicemix. >> > Hi, > In your case you need a cxf bc provider endpoint, so the flow looks like > > SE-->cxf bc providier--> external ws, > > You may need take a look at CxfBcProviderTest to get details about how > it works. > > [1]https://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java > > Freeman >
Thanks for reply, but I can't make this works yet. I've searched internet and found similar post with link to this CxfBcProviderTest.java. >>> So we need to create raw SOAP message in order to pass data instead >>> of >>> directly deal with a JavaBean >>> >> No, you needn't create raw soap message yourself. >> The raw soap message you saw in the test case is just a simple way to >> invoke the cxf se, it's not the key point of that test case. The key >> point of that test case is cxf se can hold proxy of cxf bc provider so >> that you can invoke external webservice I assume I have to define cxf bc provider and managed to communicate with my generated from wsdl cxf client. I added to my bundle-context.xml - cxfbc:provider and it looks like: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:camel-osgi="http://camel.apache.org/schema/osgi" xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://camel.apache.org/schema/osgi http://camel.apache.org/schema/osgi/camel-osgi.xsd http://servicemix.apache.org/cxfbc/1.0 http://servicemix.apache.org/cxfbc/1.0/servicemix-cxf-bc.xsd"> <camel-osgi:camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="timer://myTimer?fixedRate=true&period=30000" /> <bean ref="translator" method="translate" /> </route> </camel-osgi:camelContext> <bean class="com.amigo.cxf.TranslatorClient" id="translator" /> <cxfbc:provider wsdl="http://localhost:9090/Translator/translate?WSDL" locationURI="http://localhost:9090/Translator/translate" endpoint="tns:translatorSOAP" service="translatorSOAP"> </cxfbc:provider> </beans> But when I run this I got error: 22:18:02,423 | ERROR | myTimer | BusFactory | ache.cxf.common.logging.LogUtils 361 | Failed to instantiate bus factory. java.lang.ClassCastException: class org.apache.cxf.bus.CXFBusFactory at java.lang.Class.asSubclass(Class.java:3039) at org.apache.cxf.BusFactory.newInstance(BusFactory.java:164) at org.apache.cxf.BusFactory.newInstance(BusFactory.java:140) at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:69) at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:106) at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:97) at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:64) at javax.xml.ws.Service.<init>(Service.java:36) ... -- View this message in context: http://old.nabble.com/Invoking-external-web-service-from-SE-tp28722871p28734772.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
