Я использую веб-службы Apache CXF и интеграцию Spring, и теперь я не могу вызвать приложение Spring Integration из конечной точки CXF.Как вызвать приложение Spring Integration из вашей конечной точки CXF
У меня есть опыт работы на Apache Camel и очень легко решить эту проблему ... но весной интеграции я не имеют ни малейшего представления ....
Мои строки кода являются:
В веб-сервисы чёткости-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"/>
Но когда я развернуть и вызвать веб-служб с клиентскими-веб-сервисов вернуть эту ошибку:
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, и в ходе реализации я вызываю брандмауэр для маршрутизации сообщения запроса в моем потоке интеграции с интеграцией ... Это не очень хорошее решение, но оно работает нормально ...! – kikicarbonell