我是肥皂和弹簧集成的新手,我正在尝试使用spring-integration调用soap服务,但我得到的例外是" Dispatcher没有订阅者"。我在下面粘贴了我的代码。请帮我解决我出错的地方。
的SOAPCall-config.xml中
<int:gateway id="ws" service-interface="com.sa.WsGateway"
default-request-channel="inputChannel" />
<ws:outbound-gateway request-channel="inputChannel"
uri="http://localhost:8080/spring-webservices-sample/endpoints" />
<int:service-activator ref="dispMess" method="display"
input-channel="inputChannel"></int:service-activator>
Runner.java
Resource resource=new ClassPathResource("soapcall-config.xml");
BeanFactory factory=new XmlBeanFactory(resource);
WsGateway wsGateway=factory.getBean("ws", WsGateway.class);
AccountDetailsRequest accountDetailsRequest=new AccountDetailsRequest();
accountDetailsRequest.setAccountNumber("12345");
wsGateway.callWS(accountDetailsRequest);
DispMess.java
public class DispMess {
public void display(AccountDetailsResponse res){
System.out.println(res.getAccountDetails());
}
}
WsGateway.java
public interface WsGateway {
public void callWS(AccountDetailsRequest request);
}
即使我尝试将出站网关的uri更改为webservice的wsdl路径。但仍然存在错误。
答案 0 :(得分:1)
第一个问题:您应该开始申请,但XmlBeanFactory
并不适合您。
ClassPathXmlApplicationContext
适用于您的情况。
另一个问题:您有inputChannel
的两个订阅。默认情况下,DirectChannel
使用round-robin
调度策略。因此,第一个消息被发送到第一个用户,第二个消息被发送到第二个用户,依此类推。