6

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

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

4

2 回答 2

7

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

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

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

于 2009-04-29T22:43:55.797 回答
6

根据 OpenJDK7 源代码 for javax.net.SocketFactory,Sun JVM 被硬编码为返回一个javax.net.DefaultSocketFactoryforgetDefault();

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

于 2009-04-29T18:11:43.640 回答