3
我正在使用Apache CXF Web服务和Spring集成,现在我还没有如何从您的CXF端点调用Spring集成应用程序。如何从您的CXF端点调用Spring集成应用程序
我有工作经验的Apache的骆驼,是很容易解决这个问题...但在Spring Integration的我没有任何想法....
我行代码是:
在Web服务定义-beans.xml文件:
<!-- Load CXF modules from cxf.jar --> <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> <!--Exposing the HelloWorld service as a SOAP service --> <bean id="jaxbBean" class="org.apache.cxf.jaxb.JAXBDataBinding" scope="prototype"/> <bean id="jaxws-and-aegis-service-factory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean" scope="prototype"> <property name="dataBinding" ref="jaxbBean"/> <property name="serviceConfigurations"> <list> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/> <bean class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/> <bean class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/> </list> </property> </bean> <jaxws:endpoint id="helloWorld" serviceName="HelloWorldService" implementorClass="com.datys.cxf.HelloWorldService" address="/HelloWorld"> <jaxws:serviceFactory> <ref bean="jaxws-and-aegis-service-factory"/> </jaxws:serviceFactory> </jaxws:endpoint>
在服务定义-beans.xml文件:
<gateway id="HelloWorldService" default-request-channel="requestStrings" default-reply-channel="replyStrings" service-interface="com.datys.cxf.HelloWorldService"> <method name="sayHello"/> </gateway> <channel id="requestStrings"/> <channel id="replyStrings"/> <!--<channel id="filesOut"/>--> <service-activator input-channel="requestStrings" output-channel="filesOut" ref="handler" method="handleString"/> <file:outbound-channel-adapter id="filesOut" directory="file:D:/OUTPUT"/> <beans:bean id="handler" class="org.springframework.integration.samples.filecopy.Handler"/>
但是当我部署和客户端Web服务调用Web服务来回报这个错误:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not instantiate service class com.datys.cxf.HelloWorldService because it is an interface.
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:171)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:94)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:240)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
at $Proxy29.sayHello(Unknown Source)
我解决了这个问题,通过你的答案启发。我创建了普通的cxf web服务,并且在实现中,我调用网关bean来在我的spring集成流程中路由请求消息...这不是一个漂亮的解决方案,但它工作正常...! – kikicarbonell