Member 14048517 Ответов: 0

Как я...получение пакета javax.именования.namenotfoundexception при вызове веб-метод в JEE 5


Я использую JEE версии 5.0.2. Я вызываю веб-метод в @WebService не аннотированного класса. Этот аннотированный класс вызывает Апатридный @EJB, содержащий бизнес-логику (реализацию) вызываемого мной веб-метода.

Мой класс WebService определяется следующим образом:

@Веб-сервиса
HandlerChain(file = "MyXService_handle.xml")
публичный класс MyXService {

@EJB(mappedName="MyXBean", beanName="MyXBean")
публичный MyXBean myXBean;

@Атрибутом webmethod
публичная строка sayHello(@WebParam(name="nTimes") int nTimes) {
верните myXBean.sayHello(nTimes);
}
}

Мой EJB определяется следующим образом:

@Stateless(name="MyXBean", mappedName="MyXBean")
@TransactionManagement(TransactionManagementType.BEAN)
публичный класс MyXBean {

@PersistenceContext name="persistence/my_PU", unitName="my_PU")
защищенного метода EntityManager метода EntityManager;

публичная строка sayHello(int nTimes) {
Строка s = "";
for (int i = 0; i < nTimes; i++) {
s += "Привет";
}
возвращение с;
}
}

Я получаю следующую ошибку:

Вызвано: com.sun.enterprise.InjectionException: исключение, пытающееся ввести неразрешенный Ejb-Ref com.my.domain.MyXService/myXBean@jndi: MyXBean@null@com.my.domain.MyXBean@Session@MyXBean в класс com.sun.enterprise.webservice.JAXWSServlet
в com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:387)
в com.sun.enterprise.util.InjectionManagerImpl.inject (InjectionManagerImpl.java:206)
в com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:117)
на com.sun.web.server.J2EEInstanceListener.handleBeforeEvent(J2EEInstanceListener.java:259)
.. Еще 31 человек
Вызвана: класса javax.именования.NameNotFoundException: MyXBean#com.my.domain.MyXBean не найден
на ком.солнце.предприятия.именования.TransientContext.doLookup(TransientContext.java:216)
на ком.солнце.предприятия.именования.TransientContext.lookup(TransientContext.java:188)
на ком.солнце.предприятия.именования.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
на ком.солнце.предприятия.именования.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
на ком.солнце.предприятия.именования.SerialContext.lookup(SerialContext.java:409)
в яваксе.InitialContext.lookup(InitialContext.java:392)
на ком.солнце.предприятия.именования.NamingManagerImpl.lookup(NamingManagerImpl.java:944)
в com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
на ком.солнце.предприятия.именования.SerialContext.lookup(SerialContext.java:407)
в яваксе.InitialContext.lookup(InitialContext.java:392)
в com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:287)
.. Еще 34 человека
|#]

Класс WebService и EJB находятся точно в одном модуле в одной и той же войне. Эта война развертывается на сервере приложений GlassFish версии 2.1.1. Я только получаю это предупреждение в развертывании войти (сервер.журнал):

[#|2018-12-10T22:51:59.045+0100|WARNING|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=78;_ThreadName=Thread-946;_RequestID=bf2b9b34-5240-4eca-8b4b-9d16baad7c5b;|неразрешенный <ejb-link>: MyXBean|#]

Я следую спецификации Java EE 5, чтобы реализовать все это, поэтому я пытаюсь сделать свою архитектуру "по книге".

У меня нет никакой конфигурации xml, касающейся бобов. Я ожидал, что все будет работать через аннотации, но я получаю javax.Naming.NameNotFoundException объяснено выше.

Я что-то упустил? Я готов предоставить более подробную информацию, если это необходимо.

Спасибо.



Что я уже пробовал:

I already tried to implement an interface as explained in here https://docs.oracle.com/javaee/5/tutorial/doc/bnbmg.html but with no avail, the error persisted.

0 Ответов