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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top