JAX-WS и конфликты версий - PullRequest
       1

JAX-WS и конфликты версий

4 голосов
/ 28 сентября 2011

В качестве тестового проекта я создал очень простой WebService с использованием wsdl и jax-ws. Клиент работает очень хорошо, если он развернут как веб-приложение в GlassFish, но если я запускаю тот же (WebService-) код в Eclipse напрямую, я получаю следующую ошибку:

WARNUNG: Input Action on WSDL operation AddNumbers and @Action on its associated Web Method addNumbers did not match and will cause problems in dispatching the requests
Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/ha/store/api/BackingStoreException
    at com.sun.xml.ws.rx.mc.runtime.McConfigurationFactory.createInstance(McConfigurationFactory.java:66)
    at com.sun.xml.ws.rx.mc.runtime.McTubeFactory.createTube(McTubeFactory.java:68)
    at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:84)
    at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:130)
    at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:228)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:205)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:178)
    at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:85)
    at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:608)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:348)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)
    at javax.xml.ws.Service.getPort(Service.java:134)
    at mnm.namedesdienstes.webservice.service.NameDesDienstesService.getNameDesDienstesPortTypePort(NameDesDienstesService.java:56)
    at webserviceClient.NameDesDienstesClient.myTest(NameDesDienstesClient.java:12)
    at webserviceClient.NameDesDienstesClient.main(NameDesDienstesClient.java:25)
Caused by: java.lang.ClassNotFoundException: org.glassfish.ha.store.api.BackingStoreException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 16 more

После некоторого исследования я обнаружил, что он должен иметь отношение к различным версиям некоторых библиотечных файлов. Итак, теперь мой вопрос, как я могу «исправить» мое выполнение Java Eclipse для правильной работы моего клиента веб-сервиса? Я нашел несколько советов, как скопировать jar-файл в endorsed-каталог, но какие jar-файлы в какой каталог: -)

Я использую Max OS 10.6.8, Eclipse Project использует JVM 1.6. Моя Mac Java версия:

xmacbook:~ cstraube$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)

ОБНОВЛЕНИЕ : Моя первая попытка (благодаря ссылке с remipod) Я выполнил следующие действия:

  1. Получить каталог одобренных козней с помощью System.out.println(System.getProperty("java.endorsed.dirs"));
  2. Затем я скопировал два файла JAXWS2.1.7-20090419.jar и JAXB2_20080513.jar (обе версии 2.1.7) в этот каталог
  3. К сожалению, я получаю все ту же ошибку

Ответы [ 4 ]

11 голосов
/ 14 мая 2013

У меня похожая проблема с вашей при развертывании веб-службы (JAX-WS) в tomcat 7. Отсутствующее определение класса можно найти в ha-api.jar. org/glassfish/ha/store/api/BackingStoreException

Вы должны добавить ha-api.jar (из дистрибутива JAX-WS) в библиотеку lib.В моем случае, eclipse запускает tomcat 7, поэтому его местоположение (Tomcat 7.0 \ lib).

3 голосов
/ 08 октября 2011

Вам необходимо скопировать подходящие версии jaxws-api.jar и jaxb-api.jar в каталог / Library / Java / Home / lib / endorsed (Mac).

1 голос
/ 04 марта 2015

Я испытал точно такое же исключение

org.glassfish.ha.store.api.BackingStoreException

И после того, как все банки JAX-WS и JAX-B были одинаковой версии, проблема все еще возникала.

ИСПРАВЛЕНИЕ : Затем я добавил ha-api.jar в каталог WEB-INF \ lib, и это решило проблему.

Подсказка - пакет "ha" в пути к классу исключений, как показано выше. Надеюсь, это поможет!

1 голос
/ 28 сентября 2011

Посмотрите эту ссылку JAX WS с WS 2.1.1 .Вам нужно будет отдать приоритет вашей версии jaxws предоставленным jaxws из jre 1.6.

Edit: Glassfish уже включает в себя некоторые библиотеки, а также java 6. Мне пришлось отслеживатьdown версия конфликтует с jaxws в glassfish 3.1 / 3.1.1 и java 6/7. Вы можете проверить точное затмение времени выполнения java, используемое для запуска приложения, и найти дубликаты jar на эффективном пути к классам.

Одобренный механизм просто обеспечивает простой и подверженный ошибкам способ переопределить включенный дистрибутив jaxws.Склонность к ошибкам, потому что ваш коллега будет страдать от той же проблемы.

Я не видел исключения org.glassfish.ha.store.api.BackingStoreException в контексте jaxws.Ваш конфликт версий может быть создан другой библиотекой, чем jaxws ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...