2016-12-14 4 views
1

У нас есть сложная утилита javaee. В этом приложении много компонентов EJB 3, а некоторые из этих EJB представлены как WebServices (JAX-WS 2.1). Все приложение упаковано в один EAR, и все компоненты EJBs определены в дескрипторе ejb-jar.xml.Проблема развертывания WebServices в WebLogic 12.2.1.1

Мы перешли из WebLogic 12.1.1.0 (JDK6) в WebLogic 12.2.1.1 (JDK8 u77). У нас проблема с тем, что WebServices больше не будет развертываться в WebLogic 12.2.1.1 (EAR, однако, развертывается без ошибок). В WebLogic 12.1.1.0 у нас нет этих проблем при развертывании WebServices (тот же EAR).

Мы успешно протестировали развертывание WebService на WebLogic 12.2.1.1 с помощью одного простого теста EAR (один EJB и один EJB helloworld, открытый как WebService). Если мы создадим такой же helloworld WebService в нашем сложном приложении (развернутом в WebLogic 12.2.1.1), то этот WebService не будет развернут, однако EJB успешно развернут.

Можем ли мы регистрировать/отлаживать развертывание WebServices в WebLogic 12.2.1.1? Мы хотели бы найти причину, по которой наши WebServices не будут внедряться в новую WebLogic.

[РЕШЕНИЕ]

После зачистки вниз EAR, чтобы только необходимая зависимость, мы обнаружили, что проблема заключается в @WebService аннотации.

Если у нас есть класс или интерфейс, аннотированный с помощью @WebService, который не является частью EAR EJB-модуля, например. JAR в папке lib EAR, то веб-службы не будут развертываться в WebLogic 12.2.1.1.

Вопрос теперь, если это поведение WebLogic 12.2.1.x предназначено и может быть каким-то образом переопределено (стандартными или веблогическими) дескрипторами или это ошибка WebLogic 12.2.1.x?

+1

Это особенность, а не ошибка. «Модель программирования Java EE использует функцию аннотаций JDK для веб-контейнеров, таких как EJB, сервлеты, веб-приложения и JSP». http://docs.oracle.com/middleware/12212/wls/WLPRG/annotate_dependency.htm # WLPRG257 Это означает, что только куски на ухе доверху - это аннотация, отсканированная. Решение для меня заключалось в том, чтобы положить банку, содержащую служебную-конечную точку-интерфейс в уху. – weberjn

ответ

0

Вы пытались развернуть свой веб-сервис не как EJB? без аннотаций EJB и ссылок в ejb-jar.xml.

В настоящее время я обновляю некоторые @Stateless EJB, представленные как Webservice от WLS12.1.3 до WLS12.2.1, и это не работает должным образом (я получаю NPE при каждом вызове моего веб-сервиса). Удаление аннотации @Stateless решило проблему NPE. Похоже, что версия 12.2.1.1 Weblogic имеет проблемы с комбинацией EJB и Webservice.

я тестировал следующий код:

@WebService 
@Stateless 
public class MyWS { 
    @WebMethod 
    public String test() { 
     return "OK"; 
    } 

} 

Webservice успешно развернуты, но я получаю NPE вызова метода тестирования. Таким образом, это выглядит как ошибка в WLS12.2.1 при использовании EJB и Webservice.

Возможно, ваша проблема близка к этой.

+0

Благодарим вас за ответ, но это не тот случай, когда наше приложение развертывается в WebLogic. У меня нет никакого исключения при развертывании - в моем случае результат не разворачивается. Веб-службы – maha

2

[РЕШЕНИЕ]

Override WebServices аннотаций с помощью дескрипторов развертывания.

Для регистрации WebService вам необходимо зарегистрировать сервис-конечную точку ejb bean-сервиса в ejb-jar.xml и поместить webservice.xml и weblogic-webservices.xml в EJB-модуль EAR.

Подробнее о связи между EJB-jar.xml, webservice.xml и WebLogic-webservices.xml дескрипторы можно найти в документации Oracle Packaging and Deploying Web Services

Смежные вопросы