(我问过JMeter的用户邮件列表的同样的问题,但我想也试试在这里 - 所以在至少我可以回答这个更新一次,我找到它)。
我使用有问题JMeter的测试使用自签名的SSL证书一个Tomcat Web应用程序。 JMeter的投用消息SocketException Unconnected sockets not implemented
。 据JMeter的文档 ,应用程序设计和编写接受任何证书,自签名或CA签名或什么的。
有没有人遇到这个特定的异常之前?
我已经尝试此证书由服务器导出和导入到我的本地密钥库(使用keytool -import -alias tomcat的-file),但结果是一样的。
我还试图设置javax.net.debug =所有作为JVM ARG( 的JSSE参考指南列出了此作为调试步骤); 不过,我没有看到任何调试输出的任何地方 - 我应该想到这地方比标准输出/错误等?
大多数javax.net.SocketFactory
实现定义所有createSocket()
有参数的抽象方法。 但是,有一个createSocket()
没有,看起来像这样的参数方法:
public Socket createSocket() throws IOException {
throw new SocketException("Unconnected sockets not implemented");
}
所以,如果你继承抽象javax.net.SocketFactory
,你将会被覆盖带参数的方法,但它很容易错过覆盖createSocket()
方法不带参数。 因此,如果你的代码调用抛出异常createSocket()
只是覆盖的方法和实现。 :)
我在我的代码相同的问题(不涉及JMeter的)。
我的代码使用自定义SocketFactory
。 我发现了什么是类com.sun.jndi.ldap.Connection
调用的一些方法SocketFactory
使用Method.invoke()
它的一个尝试调用的方法是createSocket()
-不带参数。
当我将这样的方法来我厂都能正常运作。
这是一个提示,而不是一个正确的答案:在谷歌搜索结果粗略地看一眼似乎表明,异常通常是由代码强制使用默认的SSL套接字工厂故意抛出异常时的createSocket()被调用上引起它。 什么是一些结果似乎表明的是,这个问题有时在Java 6中,由于发生的错误在某些版本时,或当不正确的路径或提供密码密钥库。
所以,我要说,尝试使用Java 5.另外,尽量指向JMeter的,以使用适当的SSL证书一知名网站。 这样,您就可以测试的自签名证书的假说。
我有类似的这种使用JDK 1.6.0_10 Web服务的问题。
我升级到1.6.0_16和一切工作。
尝试搜索你的classpath(在Eclipse中,我CTRL-Shift-T键来做到这一点)为SSLSocketFactory的*。 如果你找到一个,将其作为安全类的属性:
在我的环境中,我发现有以下两种:
Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
要么
Security.setProperty("ssl.SocketFactory.provider", "com.ibm.websphere.ssl.protocol.SSLSocketFactory");
(或任何其它类,你找到)
同样,对于ServerSocketFactory
,如果需要服务器套接字。
这里是我的解决方案(Java 1.6)完全删除TLS_DHE_密码,力覆盖的方法的createSocket()
( https://gist.github.com/hoangthienan/735afb17ffd6955de95a49aa0138dbaa )
文章来源: “SocketException: Unconnected sockets not implemented” with self-signed SSL certificate