Клиент веб-службы в JBOSS 5.1 с JDK6
-
19-09-2019 - |
Вопрос
Это продолжение вопроса здесь:JBoss – должно ли приложение быть скомпилировано под тем же jdk, под которым работает JBOSS?
Однако это настолько отличается, что потребовало нового вопроса.
Я пытаюсь использовать jdk6 для запуска JBOSS 5.1 и загрузил версию JBOSS 5.1 для JDK6.Это работает нормально, и мое приложение 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.Кажется, что в этом нет необходимости, но это так.
Есть ли другой способ заставить эту работу работать, кроме использования обходного пути, который я только что описал?
Решение
Выглядит примерно так, как будто вы столкнулись с наличием JAX-WS в качестве официальной функции JDK 1.6.Не копируйте вещи в «lib», скопируйте их в «одобренный» каталог (который указан в java.endorsed.dirs). Этот может быть полезно.
Если у вас установлена последняя версия 1.6, вы можете обойти эту проблему тем же способом, что и Апач CXF делает.См. документацию для получения информации о том, как использовать CXF в среде 1.6.
Другие советы
В соответствующих разделах имеются различные предложения и пояснения. отчет об ошибке и в других местах (напр. здесь и здесь).Я не знаю, насколько хорошо они работают.
Информацию об этой проблеме вы можете найти в официальном руководстве по установке и началу работы JBoss:http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/Installation_Alternatives.html