Я пытаюсь получить доступ к сервису JAX-WS 2.2 из Tomcat6 с Java6. В том, что я исследовал, есть проблема с этим, поскольку Java пытается сначала использовать некоторые из своих библиотек javax.xml.ws по умолчанию, у которых нет метода WebFault.messageName
. Так что это не с этой ошибкой:
GRAVE: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
at com.sun.xml.ws.model.RuntimeModeler.processExceptions(RuntimeModeler.java:1162)
...
Решением, похоже, является создание «одобренного» каталога в JAVA_HOME / jre / lib / (или в TOMCAT_HOME) и помещение туда необходимых библиотек.
Однако некоторые люди говорят, что необходимая библиотека - webservices-api.jar
, например, здесь (#Issue 3):
https://www.fromdev.com/2010/01/trying-to-run-jax-ws-sample-application.html
А другие люди говорят о jaxb-api-2.2.jar
и jaxws-api.jar
, например, здесь:
Grizzly - java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName
Я скачал все три из них и поместил их в обе директории (внутри JAVA_HOME и TOMCAT_HOME).
Мои проблемы:
· У меня нет проблем с доступом к этому сервису из отдельного приложения java6, как из NetBeans, так и из-за запуска .jar из командной строки. Сбой только из Tomcat. Поэтому я не уверен, является ли указанное выше причиной моих проблем. Потому что, не должно ли оно также выйти из командной строки?
· Я не могу протестировать вышеуказанные решения, потому что Tomcat, похоже, не знает «одобренный» каталог. Когда я запускаю это в автономном приложении:
System.out.println(System.getProperty("java.endorsed.dirs"));
Он печатает:
/usr/lib/jvm/jdk1.6.0_45/jre/lib/endorsed
Однако Tomcat печатает пустую строку.
Я попытался изменить tomcat6.conf
, с помощью этого (и перезапуска, конечно):
JAVA_OPTS = " -Djava.endorsed.dirs = / usr / share / tomcat6 / endorsed -Djavax.sql.DataSource.Factory = org.apache.commons.dbcp.BasicDataSourceFactory -Djava.awt. без головы = true -Xms1024m -Xmx1024m -XX: PermSize = 1024 м -XX: MaxPermSize = 1024 м "
Но, похоже, это свойство еще не известно.
Итак, как я могу сообщить Tomcat, где находится одобренный каталог? Вы думаете, что моя проблема может отличаться от заявленной, так как она работает из автономного приложения?