2010-08-26 77 views
4

我已經編寫了一個通過jaxws連接到SSL Web服務(包括客戶端證書)的應用程序。爲此,我有一個wstrust.jks,其中包含ws的受信任根證書,client.p12是連接到ws時使用的客戶端證書。然後我創建了一個自定義的SSLSocketFactory,以便能夠在連接到ws時使用我的wstrust.jks和client.12。我告訴jaxws使用我的實現:從Java bean到Web服務的SSL連接問題

[javax.xml.ws.BindingProvider] .getRequestContext()。put(JAXWSProperties.SSL_SOCKET_FACTORY,customSSLSocketFactory);

如果我將它作爲獨立的Java應用程序運行,它就像一個魅力一樣。然而,當我在部署爲Tomcat下運行的war文件的Java bean(JSF)中使用相同的技術時,我得到一個「PKIX路徑構建失敗」 - 錯誤。

但是,如果我通過JAVA_OPTS配置SSL,當我啓動我的Tomcat(通過-Djavax.net.ssl。*參數)我得到它的工作。

所以我的問題:

我如何(或者是可能的)讓我定製的SSLSocketFactory,技術到Java bean中工作?

我想爲tomcat的自己裹在我的應用程序,作爲一個bean運行時,它是工作不同,我希望用尊重的自定義SSLSocketFactory的心不是...

感謝有這方面的投入!

/Tobbe

回答

2

解決了它。如果任何人有同樣的問題,這是如何。而不是通過設置我的自定義工廠:

[javax.xml.ws.BindingProvider] .getRequestContext()。put(JAXWSProperties.SSL_SOCKET_FACTORY,customSSLSocketFactory);

我必須設置它通過:

HttpsURLConnection.setDefaultSSLSocketFactory(customSSLSocketFactory);

否則它似乎被忽略。

/Tobbe