Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置默认SocketFactory_Java_Web Services_Sockets_Ssl_Cxf - Fatal编程技术网

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

我最近将web服务从Axis迁移到CXF(2.1)。似乎Axis需要“Axis.socketSecureFactory”集,而CXF则使用默认值。如何将Java中的默认SocketFactory设置为自己的实现(例如属性)


我不想做的是设置默认的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是正确的,因此该值是有效硬编码的。这里有一个非常酷的解决方案