从JavaBean到web服务的SSL连接问题

从JavaBean到web服务的SSL连接问题,java,tomcat,jsf,ssl,webservice-client,Java,Tomcat,Jsf,Ssl,Webservice Client,我已经编写了一个通过jaxws连接到SSL web服务(包括客户端证书)的应用程序。为此,我有一个wstrust.jks,其中包含ws的受信任根证书,以及client.p12,它是连接到ws时要使用的客户端证书。然后,我创建了一个自定义SSLSocketFactory,以便能够在连接到ws的过程中使用我的wstrust.jks和client.12。我通过以下方式告诉jaxws使用我的实现: [javax.xml.ws.BindingProvider].getRequestContext().pu

我已经编写了一个通过jaxws连接到SSL web服务(包括客户端证书)的应用程序。为此,我有一个wstrust.jks,其中包含ws的受信任根证书,以及client.p12,它是连接到ws时要使用的客户端证书。然后,我创建了一个自定义SSLSocketFactory,以便能够在连接到ws的过程中使用我的wstrust.jks和client.12。我通过以下方式告诉jaxws使用我的实现:

[javax.xml.ws.BindingProvider].getRequestContext().put(JAXWSProperties.SSL_SOCKET_工厂,customSSLSocketFactory)

如果我将它作为一个独立的java应用程序运行,那么一切都会很有魅力。但是,当我在部署为运行在Tomcat下的war文件的JavaBean(JSF)中使用相同的技术时, 我收到“PKIX路径构建失败”-错误

但是,如果在启动Tomcat(通过-Djavax.net.SSL.*参数)时通过JAVA_OPTS配置SSL,我就可以让它工作

因此,我的问题是:

我如何(或是否可能)让我的自定义SSLSocketFactory技术在Javabean中工作

我想,当tomcat围绕我的应用程序运行时,当它作为一个bean运行时,它的工作方式是不同的,我希望使用自定义的SSLSocketFactory的想法没有得到尊重

谢谢你的任何意见


/托比解决了这个问题。如果有人有同样的问题,这里是如何。而不是通过以下方式设置自定义工厂:

[javax.xml.ws.BindingProvider].getRequestContext().put(JAXWSProperties.SSL_SOCKET_工厂,customSSLSocketFactory)

我必须把它完成:

HttpsURLConnection.setDefaultSSLSocketFactory(customSSLSocketFactory)

否则,它似乎被忽视了

/托比