Это продолжение вопроса здесь:
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. Кажется, что в этом нет необходимости, но это так.
Есть ли другой способ заставить это работать, кроме использования обходного пути, который я только что описал?