HTTP传输错误:java.net.ConnectException:连接超时:在Soap ws客户端中连接

HTTP传输错误:java.net.ConnectException:连接超时:在Soap ws客户端中连接,java,soap,jax-ws,webservice-client,Java,Soap,Jax Ws,Webservice Client,在我开发的JAR客户机中,当尝试使用jax-ws调用soap-ws时,我遇到了连接超时异常,我想知道导致此异常的原因是什么。 我正在使用远程wsdl和https服务器证书,这些证书必须在VM参数中运行 -Djavax.net.debug=all -Djavax.net.ssl.trustStore=link to my certifacte 如何使用此参数运行? 通过将它们添加到eclipse.ini文件中? 谢谢你的帮助。1。从项目浏览器窗格中选择您的项目,通常位于左侧 2。从

在我开发的JAR客户机中,当尝试使用jax-ws调用soap-ws时,我遇到了连接超时异常,我想知道导致此异常的原因是什么。 我正在使用远程wsdl和https服务器证书,这些证书必须在VM参数中运行

   -Djavax.net.debug=all
   -Djavax.net.ssl.trustStore=link to my certifacte
如何使用此参数运行? 通过将它们添加到eclipse.ini文件中?
谢谢你的帮助。

1。从项目浏览器窗格中选择您的项目,通常位于左侧

2。从“运行”菜单中,根据您是要运行它还是要调试它,单击“运行”或“调试”

3。在左窗格中,选择“Java应用程序,右键单击并单击新建”

4。因为您已经选择了项目,并且它包含一个“Main”类,所以它将默认运行/调试配置“Name”为类名。如果有多个Main,则可能需要单击搜索按钮或手动键入包路径和类名

5。在“VM参数”下输入参数,如图所示

6。单击应用,如果要立即运行,请单击应用并运行它

注意,您可能需要密钥库的完整路径,例如:
-Djavax.net.ssl.trustStore=C:\ADirectory\AnotherDirectory\finaldirectorythattcontainsyourkeystore\trustStore.jks


-Djavax.net.debug=all
-将启动大量调试,如果您不习惯阅读,可能会造成混乱。如果连接正常,请拆下该线路。如果连接不起作用,那么所有的调试都是有用的

更新:要进一步解决HTTP连接问题,当问题的核心是SOAP请求时,暂时删除
-Djavax.net.debug=all
,并添加以下内容:
-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true

-Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true

-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true



这将显示HTTP头、响应代码、请求和响应正文内容。它还将显示您试图连接到的URL。

添加其他疑难解答。这是测试SSL连接的好方法。资料来源:



如果一切正常,您将“成功连接”

您可能不能或不应该使用eclipse.ini,而是将其添加到您的应用程序服务器配置中。您使用的是什么应用服务器,例如JBoss/Wildfly、Tomcat、GlassFish或WebSphere?也,连接超时通常表示在您尝试连接的端口上没有侦听任何内容或防火墙问题。我没有使用任何服务器,我正在使用客户端ssl证书处理远程soap ws的客户端,我需要在安装客户端证书后设置这些VM参数。因此,这是一个独立的类文件或JAR从命令行/shell运行?首先,您将从Eclipse运行,但当您将它传递给其他人/最终用户时,他们将从CLI或shell运行它。只是想核实一下——在提供答案之前先弄清事实;-)客户机只是我从Eclipse启动的一个Jar,之后我们将集成到一个批处理中,但现在我应该从我的Jar中测试它。让我知道这是否有帮助,如果它不能让我知道我可以进一步阐述什么。如果它让你去-请务必接受答案!非常感谢您的回答我也这么做了,我得到了一些ssl日志,例如客户端证书信息(密钥库类型、算法、密钥库提供程序…),但我仍然得到了连接时间。非常欢迎。您可以从您的开发人员笔记本电脑/计算机远程登录到该服务器的IP地址和端口吗?如果您不能,那么您可能需要联系该服务器的主机,并找出正确的IP地址和端口-也可能是端口8443。如果这不起作用-和你的防火墙团队谈谈,看看它是否被阻止了!非常感谢您的时间和帮助,我曾尝试远程登录服务器主机,但它在您提到的8443的同一端口被阻止。我想我应该通知他们。但是我还有一个问题,为什么我可以使用相同的WSDL使用SOAPUI访问web服务,而不是使用我的客户机JAR?当然,SOAPUI与您的eclipse项目在同一台开发机器上运行?是的,那没有多大意义。WSDL的SOAP UI URL是什么?生成SOAP存根时是否使用了完全相同的URL?要查看SOAP代码使用的URL,请选择您的项目,然后转到搜索菜单,选择文件,并在“包含文本”部分放置“@WebServiceClient”,确保底部的搜索窗口按设置显示“所选资源”。
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

/** Establish a SSL connection to a host and port, writes a byte and
 * prints the response. See
 * http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services
 * 
 * JGlass: Code modified for SO to hard code the host and port
 * 
 */
public class SSLPoke {
    public static void main(String[] args) {

        //add the full FQDN to the host here
        String host = "google.com";
        //your port may be 443
        int port = 8443;

        try {
            SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
            SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(host, port);

            InputStream in = sslsocket.getInputStream();
            OutputStream out = sslsocket.getOutputStream();

            // Write a test byte to get a reaction :)
            out.write(1);

            while (in.available() > 0) {
                System.out.print(in.read());
            }
            System.out.println("Successfully connected");

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}