Cliente de serviço Web no JBoss 5.1 com JDK6
-
19-09-2019 - |
Pergunta
Esta é uma continuação da pergunta aqui: JBoss - O aplicativo tem que ser compilado sob mesma jdk como JBOSS está sendo executado em?
É o suficiente diferente no entanto, que é necessária uma nova pergunta.
Eu estou tentando usar jdk6 para executar JBOSS 5.1, e eu baixei a versão JDK6 do JBoss 5.1. Isso funciona bem e meu aplicativo EAR implanta bem. No entanto, quando eu quiser executar um cliente de serviço Web com um código como este:
public static void main(String[] args) throws Exception {
System.out.println("creating the web service client...");
TestClient client = new TestClient("http://localhost:8080/tc_test_project-tc_test_project/TestBean?wsdl");
Test service = client.getTestPort();
System.out.println("calling service.retrieveAll() using the service client");
List<TestEntity> list = service.retrieveAll();
System.out.println("the number of elements in list retrieved using the client is " + list.size());
}
Eu recebo a seguinte exceção:
javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:396)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)
Agora, aqui é a parte realmente interessante . Se eu mudar o JDK que o meu código acima está funcionando sob a partir JDK6 para JDK5, a exceção acima vai embora! É muito estranho.
A única maneira que eu encontrei para o código acima para ser executado sob JDK6 era levar a pasta JBOSS_HOME / lib / endossada e copiá-lo para JDK6_HOME / lib. Isto parece que não deve ser necessário, mas é.
Existe alguma outra maneira de fazer este trabalho à excepção de usar a solução alternativa que acabei de descrever?
Solução
Parece mais ou menos como se você correu para a presença de JAX-WS como um recurso oficial do JDK 1.6. Não copie as coisas para 'lib', copiá-los para um diretório 'endossado' (listado em java.endorsed.dirs). Este pode ser útil.
Se você tem um up-to-date 1.6, você pode contornar isso da mesma forma que Apache CXF faz. Consulte a documentação para obter informações sobre como usar CXF em um ambiente 1.6.
Outras dicas
Existem várias sugestões e explicações no respectivo bug relatório e em outros lugares (por exemplo aqui e aqui ). Eu não sei o quão bem eles trabalham.
As informações sobre este problema que você pode encontrar em Instalação oficial JBoss E Guia de Introdução: http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide /5/html/Installation_Alternatives.html