веб-клиент для веб-сервиса

У меня есть веб-сервис, который хорошо работает, когда я получаю доступ к ним от J2SE (рабочий стол) приложение. Для доступа к этому сервису, я действительно следую:

  1. генерируйте тупиковые классы ссылкой wsdl с помощью Java wsimport инструмент
  2. затем я создаю сервис с помощью сгенерированных классов и выполняю одну из wsdl операций. Это похоже на это:

    Веб-сервис MyWebServiceService = новый MyWebServiceService ();

    Порт MyWebService = webService.getMyWebServicePort ();

    webService.run ("XYZ");

Как я печальный это хорошо работает, когда я использую его в автономном приложении. Но... когда я пытаюсь получить доступ к веб-сервису таким же образом, но от клиента сервлета, с помощью сгенерированных тупиков я получаю следующую ошибку:

java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitializeAccessors(EndpointMetaData.java:686)
org.jboss.ws.metadata.umdm.EndpointMetaData.initializeInternal(EndpointMetaData.java:567)
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitialize(EndpointMetaData.java:553)
org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(JAXWSClientMetaDataBuilder.java:314)
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:271)
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:202)
javax.xml.ws.Service.getPort(Service.java:143...

Я искал долгое время Google, но ничто не нашел полезными темами. Некоторые темы показывают примеры, получающие доступ к веб-сервисам от сервлета, но к сожалению я не могу сделать этого... (И не знайте то, что является причиной проблемы.

Сервер приложений: jboss 4.2.3GA

Действительно ли возможно соединить веб-сервис от сервлета? Как?

Я попробовал использование @WebServiceRef аннотация, но кажется, что веб-контейнер не может ввести тупик веб-сервиса. И я думаю, что контейнер не должен делать этого самого, потому что тупиковые классы были уже сгенерированы wsimport инструментом и его enouph для использования этого классы для доступа веб-сервиса.

Тупиковые классы были сгенерированы с помощью следующей команды:

wsimport -keep -p com.myhost.ws http://www.myhost.com/services/MyWebService?wsdl
7
задан Zaur_M 23 June 2011 в 10:44
поделиться

2 ответа

Вы убедились, что ваш класс не содержит нескольких банок JAX-B с разными версиями? Исключение выглядит как версия конфликта для меня. Серверы приложений обычно имеют какой-то «одобренный» каталог Lib, который содержит банки, которые всегда добавляются перед классными тратпами веб-приложений. Возможно, ваш сервер приложений имеет конфликтующую реализацию JAX-B?

Если вы используете Maven для пакета вашего приложения, убедитесь, что переходные зависимости не тянут в нежелательных JAX-B JAS (используйте «MVN-зависимость: дерево», чтобы проверить это ).

10
ответ дан 6 December 2019 в 21:14
поделиться

Для меня это определенно похоже на конфликт JAXB. Проверьте версии jaxb, которые у вас есть в вашей войне, и убедитесь, что они не конфликтуют с jaxb jar, который Jboss может иметь в своем каталоге lib.

1
ответ дан 6 December 2019 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: