2

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

这样做的正确方法是什么?我不认为向 API 添加虚拟方法只是为了测试连接性是最好的解决方案。通过代理是否有 CXF 方法可以做到这一点?

谢谢

4

1 回答 1

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;
    }
}

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

于 2013-01-09T21:21:26.827 回答