Клиент веб-сервиса в JBOSS 5.1 с JDK6

Это продолжение вопроса: JBoss - должно ли приложение быть скомпилировано под тем же jdk, под которым работает JBOSS?

Это достаточно отличается, хотя это требует нового вопроса.

Я пытаюсь использовать JDK6 для запуска JBOSS 5.1, и я загрузил JDK6 версию JBOSS 5.1. Это работает нормально, и мое EAR-приложение разворачивается нормально. Однако, когда я хочу запустить клиент веб-службы с кодом, подобным этому:

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());
}

Я получаю следующее исключение:

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)

Теперь вот действительно интересная часть. Если я изменю JDK, под которым выполняется мой код с JDK6 на JDK5, исключение, приведенное выше, исчезнет! Это действительно странно.

Единственный способ, которым я нашел приведенный выше код для запуска под JDK6, - это взять папку JBOSS_HOME/lib/endorsed и скопировать ее в JDK6_HOME/lib. Кажется, что в этом нет необходимости, но это так.

Есть ли другой способ сделать эту работу, кроме использования обходного пути, который я только что описал?

3 ответа

Решение

Выглядит примерно так, как будто вы столкнулись с JAX-WS в качестве официальной функции JDK 1.6. Не копируйте вещи в "lib", скопируйте их в "одобренный" каталог (тот, который указан в java.endorsed.dirs). Это может быть полезно.

Если у вас установлена последняя версия 1.6, вы можете обойти это так же, как Apache CXF. См. Документацию для получения информации о том, как использовать CXF в среде 1.6.

Существуют различные предложения и объяснения в соответствующем отчете об ошибках и в других местах (например, здесь и здесь). Я не знаю, насколько хорошо они работают.

Информацию об этой проблеме вы можете найти в официальном руководстве по установке и началу работы JBoss: http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/Installation_Alternatives.html

Другие вопросы по тегам