Estou aqui para postar um problema de incompatibilidade entre as versões do Java 6 e o J-BOSS 4.2.3.GA ao tentar acessar um determinado WebService.
Durante o desenvolvimento de um determinado projeto, precisei em um dado momento consumir um certo WebService governamental a partir de seu WSDL e em seguida, acessá-lo.
Até consumir não tive problemas, mas ao iniciar o servidor de aplicação, me foi retornada a seguinte exception:
"java.lang.
at javax.xml.soap.SOAPMessage.
at org.jboss.ws.core.soap.
at org.jboss.ws.core.soap.
I found that the jbossws-native-saaj.jar library has an OVERWRITTEN class javax.xml.soap.SOAPMessage which has overrided the method setProperty():
Após alguma pesquisa e várias tentativas consegui isolar o problema e entendê-lo. A forma encontrada para solucionar o problema foi movendo a api "jboss-saaj.jar" geralmente localizada na biblioteca"client" para a biblioteca"endorsed" localizada dentro do diretório "lib", logo no primeiro nível. Ex: "
Dessa forma a exception é desconsiderada.
A explicação para esse problema se dá ao fato de que na versão atual da SUN (Java 6) essa api já vem implementada. Ao iniciar a aplicação para tentar acessar o WebService requerido, a classe SOAPMessage da SUN (protocolo SOAP) que se encontra na api "jboss-saaj.jar" é utilizada, causando a exception.
A solução é carregar essa api "jboss-saaj.jar" antes da JDK, adicionando-a na biblioteca "endorsed" do servidor de aplicação, conforme falei.
Dessa forma a prioridade são as apis que se encontram nessa biblioteca. Ao iniciar o servidor de aplicação, "sempre" serão iniciadas as apis que se encontram na biblioteca "endorsed" do servidor antes das apis da JDK, resolvendo o conflito de apis.
Espero ter ajudado.
Arthur Gomes.
Nenhum comentário:
Postar um comentário