我目前正在尝试使用Spring MockWebServiceServer测试我的Web服务客户端,因为尚未公开真正的Web服务服务器。我一直在关注春季文档http://docs.spring.io/spring-ws/site/reference/html/client.html,但仍然遇到如下问题:
org.springframework.ws.client.WebServiceIOException: I/O error: Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:545)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:386)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:380)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:372)
我认为该错误与我自动连接到我的WS客户端的WebServiceTemplate有关,如下所示。由于我使用的是MockWebServiceServer,我认为不需要真正的HTTP连接,但为什么会这样抱怨呢?我是否仍然需要启动我的tomcat服务器以使localhost:8080即使使用MockWebServiceServer也可以访问?
<bean id="vehicleOrderConfirmationWebServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory"/>
<property name="marshaller" ref="vehicleOrderConfirmationMarshaller" />
<property name="unmarshaller" ref="vehicleOrderConfirmationMarshaller" />
<property name="defaultUri" value="http://localhost:8080"/>
</bean>
有人可以建议吗?
答案 0 :(得分:0)
模拟服务器不需要真正的http连接。它嘲笑MessageSender。 你是如何创建模拟Web服务器的?以下用法必须足够真实的模拟服务器
MockWebServiceServer.createServer(vehicleOrderConfirmationWebServiceTemplate);
答案 1 :(得分:0)
如果您的客户端类扩展WebServiceGatewaySupport
,例如Spring reference documentation给出的示例,请确保使用继承的WebServiceTemplate
方法设置setWebServiceTemplate()
。
@Autowired
public CustomerClient (WebServiceTemplate customerClientWebServiceTemplate) {
setWebServiceTemplate(customerClientWebServiceTemplate);
}