2013-01-09 137 views
2

我有通过Swing客户端使用的CXF Web服务。首先,我创建一个JaxWsProxyFactoryBean,然后创建JAX WS代理。此时,我想测试客户端是否可以正确地向Web服务发送消息。我知道HTTP是一种无状态协议,因此它不会在其层中使用任何连接。到目前为止,我已经使用了由Web服务定义的ping()方法,以便客户端测试连接性。使用CXF测试Web服务连接

这样做的正确方法是什么?我不认为为了允许测试连接而添加虚拟方法是最好的解决方案。是否有CXF的方式来做到这一点,虽然代理?

感谢

回答

2

你有两个选择这样做:

  1. 我假设你的Web服务是SOAP的Web服务,那么你就可以发出WSDL文档一个HTTP HEAD请求。
  2. 在Web服务中实现特殊的“ping”操作(SOAP)。 (也许你已经拥有它)

如果你选择第一个选项 - 使您可以使用下面的代码来实现一个HTTP HEAD请求:

public static boolean exists(String webServiceUrl){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 
     HttpURLConnection connection = (HttpURLConnection) new URL(webServiceUrl).openConnection(); 
     connection.setRequestMethod("HEAD"); 
     return connection.getResponseCode() == HttpURLConnection.HTTP_OK; 
    } catch (Exception e) {  
     return false; 
    } 
} 

如果执行HEAD请求您的Web服务,这意味着Web服务是可访问的。

+0

感谢您的回答。正如我在问题中所说的,到现在为止我使用了特殊的ping操作。我喜欢你提出的第一个解决方案,但我想知道是否不使用CXF代理发出HEAD请求可能是一个问题。使用HttpURLConnection发出HEAD请求只会检查是否存在与服务的连接。但是,我也想检查我是否可以通过CXF代理访问服务,因为它将成为客户用来访问服务的服务。你知道是否可以通过CXF代理发出HEAD请求? –