Recentemente me deparei com a seguinte situação no jboss 4.2.3:
java.lang.ClassNotFoundException: org.jboss.ws.core.soap.SAAJMetaFactoryImpl
O artefato que possui a classe solicitada acima é o jbossws.sar que fica dentro da pasta deploy do jboss que havia sido removido porque a minha aplicação não dependia do jax-ws antes.
Porém não tenho interesse em restaurar esse artefato porque não pretendo mais depender das classes jax-ws do JBoss. Dependerei das classes do Spring Web Services que já possui uma implementação do javax.xml.soap.SAAJMetaFactory.
A primeira pergunta é: Quem está solicitando ao JBoss a instanciação da classe org.jboss.ws.core.soap.SAAJMetaFactoryImpl?
Dentro do artefato jboss-saaj.jar que está presente na pasta lib e lib/endorsed do JBoss existe um apontamento para essa classe no arquivo META-INF/services/javax.xml.soap.MetaFactory.
E a segunda pergunta é: Como fazer para que o JBoss deixe de procurar essa classe?
Basta remover o arquivo jboss-saaj.jar tanto da pasta lib quanto da lib/endorsed e dessa forma, no meu caso, o Spring Web Services será utilizado para carregar o meu artefato.