Soap UI: 错误:java.net.SocketException: 连接重置

15

我遇到了错误:

java.net.SocketException: 连接重置。

我已经按照下面的链接尝试解决这个问题了,但是没有成功。

我在下面给出了错误日志,请帮忙查看并告诉我如何解决这个问题?

Thu Mar 23 16:11:51 IST 2017:ERROR:java.net.SocketException: Connection reset
   java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.security.ssl.InputRecord.readFully(Unknown Source)
    at sun.security.ssl.InputRecord.read(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
    at sun.security.ssl.AppOutputStream.write(Unknown Source)
    at org.apache.http.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:131)
    at org.apache.http.impl.io.AbstractSessionOutputBuffer.flush(AbstractSessionOutputBuffer.java:138)
    at org.apache.http.impl.conn.LoggingSessionOutputBuffer.flush(LoggingSessionOutputBuffer.java:95)
    at org.apache.http.impl.AbstractHttpClientConnection.doFlush(AbstractHttpClientConnection.java:270)
    at org.apache.http.impl.AbstractHttpClientConnection.flush(AbstractHttpClientConnection.java:275)
    at org.apache.http.impl.conn.AbstractClientConnAdapter.flush(AbstractClientConnAdapter.java:197)
    at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:258)
    at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$SoapUIHttpRequestExecutor.doSendRequest(HttpClientSupport.java:113)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:633)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:454)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.java:247)
    at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.java:362)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.submitRequest(HttpClientRequestTransport.java:324)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:237)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:127)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

那是你的客户端异常吗?服务器说了什么? - Brian Agnew
在浏览器中可以正常工作,但是从Soapui调用时出现错误。 - ChanGan
1
请在客户端上使用“-Djavax.net.debug=ssl,handshake”运行,并将结果发布在您的问题中。如果您的服务器正在执行客户端身份验证,请提供相关的客户端设置。 - user207421
6个回答

22

WINDOWS

选项1:

  1. 在计算机中找到以下文件(确保您有对该文件的写访问权限):C:\Program Files\SmartBear\SoapUI-5.2.1\bin\SoapUI-5.2.1.vmoptions

  2. 在文件中添加以下行:

-Dsoapui.https.protocols="SSLv3,TLSv1.2"

  1. 使用.exe文件(SoapUI-5.2.1.exe)运行SoapUI

选项2:(如果选项1对您不起作用)。

  1. 编辑计算机中的以下批处理文件(确保您有对该文件的写访问权限):C:\Program Files\SmartBear\SoapUI-5.2.1\bin\soapui.bat
  2. 在文件中添加以下行(在此之后:if "%SOAPUI_HOME%" == "" goto START):

set JAVA_OPTS=%JAVA_OPTS% -Dsoapui.https.protocols="SSLv3,TLSv1.2"

  1. 使用批处理文件(soapui.bat)运行SoapUI

MAC (OSX)

Mac的默认安装位置位于根目录下的应用程序文件夹中,并且vmoptions.txt文件也在那里。右键单击应用程序文件夹中的SOAPUI .app文件,选择“显示包内容”以获取内部文件。

/Applications/SoapUI-X.X.X.app/Contents/vmoptions.txt

将以下行添加到vmoptions.txt文件中:

-Dsoapui.https.protocols=TLSv1.2

LINUX

  1. Edit: bin/SoapUI-5.3.0.vmoptions in SoapUI directory

  2. Add the following line to the file:

-Dsoapui.https.protocols=TLSv1.2

希望对您有所帮助。


9
谢谢 - 注意:我在.vmoptions文件(Windows)中必须省略引号,像这样:-Dsoapui.https.protocols=SSLv3,TLSv1.2 - ne1410s
如果你正在使用 Windows 7(例如,如果你在开发中使用 IISExpress),那么你必须启用 TLSv1.2 协议。请参考:https://www.derekseaman.com/2010/06/enable-tls-12-aes-256-and-sha-256-in.html - Gregor Slavec
3
在SoapUI 5.3.0中,Windows对我来说是可行的。但是,我必须去掉引号才能使其正常工作:-Dsoapui.https.protocols=SSLv3,TLSv1.2。 - Yann
不幸的是,无论是带引号还是不带引号,都对我没有起作用。 - Jonathon Cowley-Thom

2

尝试了所有的解决方案,但都没有起作用。在忽略SoapUI中的jre目录之后,它开始工作了。所以,如果上述解决方案对您无效,请尝试以下方法:

  1. 关闭SoapUI
  2. 进入SoapUI目录,例如:C:\Program Files\SmartBear\SoapUI-5.3.0\
  3. 将目录“jre”重命名为“jre.ignore”
  4. 完成。现在打开SoapUI应该可以工作了。

我不明白为什么有人会对这个答案进行负评,但是这个 bug 在新版本中仍然存在。我们整个开发团队都遇到了同样的问题。就在一周前,我的客户在 Mac 上也遇到了同样的问题。使用默认的 Java 而不是 SoapUI Java 可以解决问题。很可能提到的问题有多个来源,但最好不要忽略这个,因为对于我、我的同事和我的客户来说,这个解决方案总是有效的。 - Krzysztof Cieśliński
1
这真的有效!不知道为什么,但这是唯一有效的解决方案。 - tok
当我重命名文件夹并重新启动SOAPUI时,会出现消息“在您的系统上找不到JVM...”(SOAPUI 5.4.0)。 - Roeland
@Roeland,你是否已经安装了Java并设置了Java Home(系统变量路径)?这可能与此有关。 - Krzysztof Cieśliński
嗨,Krzysztof,我需要安装32位版本而不是64位。但是,现在我仍然收到连接重置消息。 - Roeland

0
在我的情况下,除了这个建议以外,以上所有建议都没有奏效。(我只在位于SergiSPN答案上面的SoapUI-X.X.X.vmoptions文件中添加了这一行代码)
-Djava.net.preferIPv4Stack=true

我们公司的基础设施中一定存在某种针对IPv6的限制,但我不知道具体是什么。


0

我认为您正在使用公司连接,而公司防火墙正在阻止该连接。


他已经建立了连接并从中读取,因此防火墙不会阻止它。 - user207421

-1

2
你能否写一个更详细的答案,关于“在注册表中删除协议”的问题? - krzyski

-2
仅供测试目的:如果其他方法都失败了,您也可以使用http而不是https。只需在SoapUI请求窗口中编辑URL即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接