Tive recentemente que fazer uma prova de conceito, usando web services. Criei uma aplicação usando JAX-WS no JBoss 4.2.2 rodando na JDK 6 da Sun e me deparei um a seguinte exceção:
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.<init>(SOAPMessageImpl.java:83) at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:161)
Pesquisando um pouco achei vários relatos similares e até uma entrada no JIRA. A classe SOAPMessage é da biblioteca SAAJ, e o problema é entre o JBoss e a JDK 6. Até a versão 6, essa biblioteca era distruida separadamente, mas na nova versão ela já vem integrada. O problema é que o JBoss já possui uma implementação própria dessa biblioteca e ao se carregar o SOAPMessage a biblioteca da Sun é utilizada, a qual está implementada de forma lançar um UnsupportedOperationException.
Uma solução é usar o esquema de endorsed da JVM. Bibliotecas endorsed são carregadas antes, tendo prioridade então sobre quaisquer outras bibliotecas. Assim, basta adicionarmos o jboss-saaj.jar (em <CONFIG_HOME>/lib) ao <JBOSS_HOME>/lib/endorsed. O script run.sh define a variável JBOSS_ENDORSED_DIRS=”$JBOSS_HOME/lib/endorsed” e cuida de setar esse diretório na propriedade java.endorsed.dirs da JVM.
Mas eu estou rodando o JBoss para JDK 6! (EDIT)
Existe uma “peculiaridade” se você estiver rodando o JBoss 5 para JDK 6 no WTP do Eclipse. O JBoss 5 usa o $JBOSS_HOME/lib/endorsed como o java.endorsed.dirs, setando esse parâmetro quando executamos o $JBOSS_HOME/bin/run.sh. O problema quando executamos via WTP é que o eclipse não usar o run.sh, portanto não seta o diretório endorsed e caímos no mesmo problema do JBoss 4.
Para resolver o problema basta clicar no “launch configuration” do servidor e adicionar o seguinte parâmetro no “VM arguments”:
-Djava.endorsed.dirs=../lib/endorsed
IMPORTANTE: O JBoss não é oficialmente suportado na JDK 6 e outros imprevistos podem vir a ocorrer. Recomenda-se utilizar a JDK 5, ao invés.

Obrigado pelo post! Me economizou algumas horas de pesquisa
Minha tambem….o motivo não era o mesmo mas já deu para dar uma luz!
Obrigado!
Muito obrigado pelo post ! me economizou tb um baita dor de cabeça
WebServices Rules !!!
Boa! Valeu!
Valeu, Liu!!! Tive o mesmo problema agora e consegui solucionar através desta sua postagem.
[]‘s
Rafael,
usando o JBossWS-Native 3.2.2 esse problema não ocorre. Basta seguir a documentação do JBossWS-Native e executar a instalação usando o ant.
Testei com jboss 5.1 compilado para jdk 5 e jdk 6.
Saudações!
Francisco,
com o JBoss 5.1 não há esse problema, ele já utiliza uma pasta endorsed por padrão ($JBOSS_HOME/lib/endorsed).
Tenho uma solução bem mais imples. Sem mexer no JBoss. No meu caso o Servidor é controlado por outra equipe e por isso não posso mexer nas libs do JBoss. Coloquei a “saaj-impl.jar” dentro do projeto. Funcionou perfeitamente.
Danilo,
você deve estar usando a versão correta do JBoss, com a JDK correspondente. O post é para quem tem que usar versões diferentes.
Grande Liu!
Valeu pela dica!
Salvou a minha vida cara,
Mt bom post…
Absss
Tá de parabéns, acertou de primeira
Valeu Liu, resolveu meu problema tb.
Liu, resolveu o meu problema, também!
Uso o JBoss 5.1 em JDK 1.6.017, sendo chamado de dentro do Eclipse. Fiz a alteração do launch configurations e funcionou. Obrigado!
Amigo, tenho um webservice no jboss e estou com uma classe principal aqui onde to tentando executar via Run As > Java Application e está dando este erro que vc citou. Pode me ajudar?
Não entendo como tu pode estar tentando executar como Java Application. Está usando Endpoint.publish()? Nesse caso não tem nada a ver o caso relatado no post.. De qualquer modo, é um problema de classpath.
Valeu! Depois de uma googlada achei seu post!
Obrigado!
Mais um salvo! Valeu Liu!
+ 1 salvo.
tks!