Olá pessoal!
Aqui na empresa onde trabalho, fizemos um sw q testamos normalmente no Tomcat. Fizemos o deploy e rodou bonitinho! Mas quando fomos instalar o sw no cliente, este usava o IBM Websphere 6.1.19. Até aí não tinha problema. O sistema fez o deploy certinho, mas na hora de logar deu o erro:
ClassNotFoundException: com.sun.net.ssl.internal.ssl.Provider
Daí fui procurar de onde vem essa classe e descobri que ela vem de jsse.jar, um jar que vem com jdk desde 1.4.2!
E essa versão do Websphere utiliza o Java 5 como virtual machine interna. Ou seja, deveria encontrar né? O que pode estar acontecendo? No meu ambiente rola tudo normal, afinal o jsse.jar tá lá no JRE libs. Mas quando levamos o .war para o websphere do cliente, temos esse problema ao logar. =/
Qualquer ajuda, agradeço muito!
Pelo que parece ele está lendo Provider Incorreto de Segurança implementação da SUN, deveria a implementaçao da IBM.
Vc tentou adicionar esse JAR no ClassPath? ibmjsse.jar
Tente colocar essa configuracao no arquivo java.security: security.provider.1=com.ibm.jsse.IBMJSEEProvider
Olá!
Olha, o ibmjsse.jar deve vir com websphere por default. Realmente foi uma boa idéia vc lembrar da configuração do java.security. Vou dar uma olhada nessa configuração amanhã. Talvez ele tenha o ibmjsse.jar no websphere mas o provider indicado no java.security seja o da Sun.
Vlw!
Pessoal,
olhei o java.security que estava dentro do WebsphereApp e reparei que ele NÃO está chamando o JSSEProvider da Sun. Está como prioridade maior o JSSE da IBM mesmo. Assim:
security.provider.1=com.ibm.crypto.provider.IBMJCE
security.provider.2=com.ibm.jsse.IBMJSSEProvider
security.provider.3=com.ibm.jsse2.IBMJSSEProvider2
security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
security.provider.5=com.ibm.security.cert.IBMCertPath
security.provider.6=com.ibm.crypto.pkcs11.provider.IBMPKCS11
security.provider.7=com.ibm.security.cmskeystore.CMSProvider
security.provider.8=com.ibm.security.jgss.mech.spnego.IBMSPNEGO
A minha dúvida é:
De q parte, no código, está sendo chamado o Sun JSSEProvider, se no Search do eclipse eu não encontro nenhuma chamada a ele?
Qualquer sugestão, estamos ae!
[]s.
Depois de rodar muito, descobri aonde em meu código está sendo chamado o "com.sun.net.ssl.internal.ssl.Provider ". Mas aih surgiu outra dúvida. Estou utilizando o Maven para controle de dependências. Daih, nas libs do mvn tinha o axis1.4.jar proveniente de uma outra implementação antiga e que não é mais utilizada em nenhuma parte do projeto. Dentro desse axis.jar encontrei uma classe chamada JSSESocketFactory que fazia uma chamada direta e estática a com.sun.net.ssl.internal… Tipo:
static {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
}
Ora, mas eu nem tava utilizando mais axis1.4.jar!! Tava lah no maven soh de enfeite! A pergunta é:
Existe alguma coisa que pode fazer esse trecho de código ser executado mesmo sem nenhuma outra classe chamar o axis.jar?
Outra coisa: Visto que estou desenvolvendo em um Tomcat server(e utilizando a JRE da Sun) as classes do maven que dão import em pacotes da Sun(tipo import com.sun.net.*
são encontradas com sucesso. Mas não sei se quando for executar no Websphere vai rolar essa importação(creio q não…). Alguém pode me ajudar com essas duas dúvidas cabeludas??
[]s.