org.springframework.integration.MessageDeliveryException:Dispatcher没有订阅者

时间:2014-12-12 06:17:20

标签: soap jaxb spring-integration soap-client

我是肥皂和弹簧集成的新手,我正在尝试使用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路径。但仍然存在错误。

1 个答案:

答案 0 :(得分:1)

第一个问题:您应该开始申请,但XmlBeanFactory并不适合您。

ClassPathXmlApplicationContext适用于您的情况。

查看Spring Integration Samples

另一个问题:您有inputChannel的两个订阅。默认情况下,DirectChannel使用round-robin调度策略。因此,第一个消息被发送到第一个用户,第二个消息被发送到第二个用户,依此类推。