Definindo o SocketFactory padrão
-
03-07-2019 - |
Pergunta
Recentemente, migrei meus serviços da Web do Eixo para o CXF (2.1). Parece que, embora o Axis precisasse do conjunto "Axis.SocketSecureFactory", o CXF agarra o padrão. Como defino o SocketFactory padrão em Java para minha própria implementação (como uma propriedade)?
O que eu sou não Olhar para fazer é definir as propriedades do SocketFactory padrão, como definir a propriedade para meu TrustStore, Keystore e senhas.
Solução
De acordo com o código fonte do OpenJDK7 para javax.net.SocketFactory
, a JVM Sun é codificada para devolver um javax.net.DefaultSocketFactory
por getDefault();
EDIT: No entanto, o SSLSocketFactory padrão pode ser definido pela propriedade de segurança ssl.SocketFactory.provider
Outras dicas
Se estamos falando sobre os soquetes padrão, então Socket.setSocketImplFactory(SocketImplFactory)
é usado para mudar de fábrica para soquetes comuns e ServerSocket.setSocketFactory(SocketImplFactory)
para soquetes de servidor.
Se você estiver usando isso, observe o fato de que você só pode definir essas fábricas uma vez.
Observe os padrões de implementação do soquete Java para usar o SockSSocketImpl (uma classe visível do pacote em java.net) se descobrir que a fábrica está null
Caso você queira uma fábrica que possa mudar o pacote para a implementação Java padrão.