私は Apache CXF Web サービスと Spring Integration を使用していますが、CXF エンドポイントから Spring Integration アプリケーションを呼び出す方法がわかりません。
私は Apache Camel で作業した経験があり、この問題を解決するのは非常に簡単です...しかし、Spring Integration ではわかりません....
私の回線コードは次のとおりです。
webservices-definition-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>
service-definition-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"/>
しかし、client-webservices を使用して 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)