Mostrando postagens com marcador JBoss. Mostrar todas as postagens
Mostrando postagens com marcador JBoss. Mostrar todas as postagens

23 de janeiro de 2010

Incopatilbilidade entre as versões do Java 6 e o servidor J-BOSS 4.2.3.GA

Olá pessoal;

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.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at javax.xml.soap.SOAPMessage.setProperty(SOAPMessage.java:424)
at org.jboss.ws.core.soap.SOAPMessageImpl.(SOAPMessageImpl.java:83)
at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:161)

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: "/lib/endorsed>"
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.




17 de junho de 2008

Instalando e Configurando o JBoss para porta 8080 ou 8089

Esse tutorial fiz com auxílio do grande amigo Carlos Magno da Seiva Brasil.

Descompacte o arquivo jboss-x.x.x.zip na raiz do sistema operacional, no caso do windows c:
No diretorio da pasta c:\jboss-x.x.x\server\default, fazer uma cópia do default e renomear com o nome do seu projeto, exemplo: projetoJSFXPTO
Dentro da pasta c:\jboss-x.x.x\server\projetoJSFXPTO\deploy, remover as seguintes pastas:
\jms
\jboss-hibernate.sar
\management

Copiar o projetoJSFXPTO.war (gerar o war) para dentro do diretório:
c:\jboss-x.x.x\server\projetoJSFXPTO\deploy

ficando assim: c:\jboss-x.x.x\server\projetoJSFXPTO\deploy\projetoJSFXPTO.war

Para executar o servidor, configure as variaveis de ambiente para JBOSS_HOME
ficando
JBOSS_HOME
c:\jboss-x.x.x

E configure o Path:
depois do ultimo dado da linha ;%JBOSS_HOME%\bin

no prompt de comando digite:
run -c projetoJSFXPTO

Caso visualize a mensagem JVM Bind 8080, execute o passo a seguir:

Alterar o arquivo server.xml que se encontra no path:
c:\jboss-x.x.x\server\default\deploy\jbossweb-tomcatX.sar\server.xml

Editar o arquivo e alterar onde está indicado HTTP/1.1 Connector on port 8080












Pronto é isso e rodar o run -c projetoJSFXPTO

Pronto pode usar lá a url do servidor e acessar o projeto

Lembrando q o tomcatX, tcX, jboss-x.x.x são as versões.