ClassNotFoundException - Deploy de War no Websphere

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.*:wink: 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.