我最近将我的Web服务从Axis迁移到了CXF(2.1)。看来,虽然Axis需要“axis.socketSecureFactory”设置,但CXF会抓取默认值。如何将Java中的默认SocketFactory设置为我自己的实现(例如属性)?
我不要做的是设置默认的SocketFactory属性,例如设置我的信任库,密钥库和密码的属性。
答案 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
设置