Java 使用CXF测试web服务连接性

Java 使用CXF测试web服务连接性,java,web-services,connection,cxf,Java,Web Services,Connection,Cxf,我有一个通过Swing客户端使用的CXF web服务。首先,我创建一个JaxWsProxyFactoryBean,然后创建JAX-WS代理。此时,我想测试客户机是否能够正确地向web服务发送消息。我知道HTTP是一个无状态协议,因此它在其层不使用任何连接。到目前为止,我使用了web服务定义的ping()方法,以便客户端测试连接性 正确的方法是什么?我不认为向API添加一个虚拟方法只是为了允许测试连接性是最好的解决方案。有没有一种CXF方法可以通过代理实现这一点 谢谢您有两种选择: 我假设您的we

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

正确的方法是什么?我不认为向API添加一个虚拟方法只是为了允许测试连接性是最好的解决方案。有没有一种CXF方法可以通过代理实现这一点


谢谢

您有两种选择:

  • 我假设您的web服务是SOAPWeb服务,那么您可以为WSDL文档发出HTTP头请求
  • 在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服务。

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