设置默认的SocketFactory

时间:2009-04-29 17:52:21

标签: java web-services sockets ssl cxf

我最近将我的Web服务从Axis迁移到了CXF(2.1)。看来,虽然Axis需要“axis.socketSecureFactory”设置,但CXF会抓取默认值。如何将Java中的默认SocketFactory设置为我自己的实现(例如属性)?

要做的是设置默认的SocketFactory属性,例如设置我的信任库,密钥库和密码的属性。

2 个答案:

答案 0 :(得分:7)

如果我们讨论标准套接字,那么Socket.setSocketImplFactory(SocketImplFactory)用于更改普通套接字的工厂和ServerSocket.setSocketFactory(SocketImplFactory)用于服务器套接字。

如果您使用这些,请注意您只能设置这些工厂一次。

注意java套接字实现默认使用SocksSocketImpl(java.net中的包可见类),如果它发现工厂是null,以防你想要一个可以将包切换到标准java实现的工厂

答案 1 :(得分:6)

根据javax.net.SocketFactory的OpenJDK7源代码,Sun JVM被硬编码为getDefault();

返回javax.net.DefaultSocketFactory

编辑:但是,默认的SSLSocketFactory可以由安全属性ssl.SocketFactory.provider设置