Использование аннотаций ejb и CDI в проекте, где старые конфигурации EJB находятся в ejb-jar. xml - PullRequest
1 голос
/ 11 июля 2020

У меня есть устаревший проект с EJB, где они настроены в ejb-jar.xml, например:

<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
    <session>
        <ejb-name>MyBean</ejb-name>
        <home>com.abby.api.RemoteBeanHome</home>
        <remote>com.abby.api.RemoteBean</remote>
        <ejb-class>com.abby.api.MyBean</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
    </session>
....

Это работает путем поиска дерева JNDI. Однако сервер был обновлен до Weblogi c 12.2 , где поддерживается Java EE 7 . Поэтому при внедрении нового локального EJB в удаленный сеансовый компонент MyBean я думаю об использовании только аннотации @EJB, не касаясь существующего дескриптора развертывания XML.

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

The ejb-ref does not have an ejb-link and the JNDI name of the target bean has
not been specified. Attempts to automatically link the ejb-ref to its target 
bean failed because no EJBs in the application were found to implement the
"com.abby.api.NewBean" interface. Link or map this ejb-ref to its target EJB 
and ensure the interfaces declared in the ejb-ref are correct.

Новый локальный код ejb без сохранения состояния выглядит следующим образом:

@Stateless
public class TestEJB {
    public void test() {
        LOGGER.debug("I am the first EJB injected with CDI");
    }
}

Мой вопрос: в этом случае все еще возможно добавлять новые EJB с аннотациями вместо ejb-jar.xml?

...