Java 设置默认SocketFactory
我最近将web服务从Axis迁移到CXF(2.1)。似乎Axis需要“Axis.socketSecureFactory”集,而CXF则使用默认值。如何将Java中的默认SocketFactory设置为自己的实现(例如属性)Java 设置默认SocketFactory,java,web-services,sockets,ssl,cxf,Java,Web Services,Sockets,Ssl,Cxf,我最近将web服务从Axis迁移到CXF(2.1)。似乎Axis需要“Axis.socketSecureFactory”集,而CXF则使用默认值。如何将Java中的默认SocketFactory设置为自己的实现(例如属性) 我不想做的是设置默认的SocketFactory属性,比如设置我的信任库、密钥库和密码的属性。根据的OpenJDK7源代码,Sun JVM硬编码为返回forgetDefault() 编辑:但是,默认SSLSocketFactory可以通过安全属性ssl.SocketFacto
我不想做的是设置默认的SocketFactory属性,比如设置我的信任库、密钥库和密码的属性。根据的OpenJDK7源代码,Sun JVM硬编码为返回for
getDefault()代码>
编辑:但是,默认SSLSocketFactory可以通过安全属性ssl.SocketFactory.provider
设置,如果我们谈论的是标准套接字,那么Socket.setSocketImplFactory(SocketImplFactory)
用于更改普通套接字的工厂和ServerSocket.setSocketFactory(SocketImplFactory)
用于服务器套接字
如果您正在使用这些工厂,那么请注意,您只能设置这些工厂一次
注意,java套接字实现默认使用SocksSocketImpl(java.net中的包可见类)如果它发现工厂为null
,以防您需要一个可以将包切换到标准java实现的工厂。在代码中,您可以看到,只有在不设置另一个的情况下,它才会返回该值。@ssedano属性无法从其他任何地方访问,并且代码定义了一个标准的惰性实例化getter。Powerlord是正确的,因此该值是有效硬编码的。这里有一个非常酷的解决方案