Tomcat не может найти класс "InaccessibleWSDLException", стеклянная рыба может - PullRequest
0 голосов
/ 26 марта 2011

Я работаю с веб-сервисами в Java, и сразу после открытия порта и вызова службы я пытаюсь поймать "com.sun.xml.ws.wsdl.parser.InaccessibleWSDLException".

Это отлично работало на моем сервере dev Glassfish v2, нокогда я переместил свой WAR-файл в Tomcat, я получил NoClassDefFoundError:

java.lang.NoClassDefFoundError: com/sun/xml/ws/wsdl/parser/InaccessibleWSDLException

Я сделал его в Google и обнаружил, что JAR jaxws-rt.jar имеет InaccessibleWSDLExceptionучебный класс.Но включение этого JAR в мою WAR только сломало больше вещей.

Буду признателен за любую помощь в устранении этой ошибки.

Спасибо.

Дополнительная информация:

После добавления jaxws-rt.jar я получаю это на всех сервисах, независимо от того, ловлю ли я InaccessibleWSDLException или нет:

java.lang.ClassNotFoundException: com.sun.xml.stream.buffer.XMLStreamBuffer

Ответы [ 2 ]

4 голосов
/ 26 марта 2011

Возможно, проблема в том, что вы импортируете класс, начинающийся с com.sun.. Как правило, это плохо: Почему разработчики не должны писать программы, которые называют «солнечными» пакетами

Этот класс не задокументирован как часть спецификации JAX-WS, поэтому я ожидаю, что этот класс является частью реализации JAX-WS в Glassfish; он вряд ли будет присутствовать в любой другой реализации, и вам не следует ссылаться на него, если вы хотите, чтобы ваш код был переносимым. Я предлагаю вам поймать WebServiceException вместо этого (который, я считаю, является родительским типом).

1 голос
/ 26 марта 2011

Вам нужно добавить все зависимости WSDL, я не уверен, что они есть, но потоковый буфер выглядит так, как здесь, jar можно найти здесь:

http://download.java.net/maven/1/com.sun.xml.stream.buffer/jars/

Он работает в Glassfish, потому что он имеет все эти банки, установленные по умолчанию, в то время как Tomcat нет.

...