是否有可能在旧项目中使用ejb批注和CDI,其中所有现有EJB都在ejb-jar.xml中配置

问题描述 投票:1回答:1

存在具有最旧EJB的遗留代码库,其中所有现有EJBS在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>ABean</ejb-name>
        <home>com.bla.api.RemoteBeanHome</home>
        <remote>com.bla.api.RemoteBean</remote>
        <ejb-class>com.bla.api.ABean</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
    </session>
....

这是通过搜索JNDI进行的。但是,服务器已升级到Weblogic 12.2

,其中支持Java EE 7。因此,当向远程会话bean ABean注入新的local EJB时,我正在考虑仅使用批注@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.bla.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() {
        System.out.println("I am the first EJB injected with CDI");
    }
}

问题:在这种情况下,是否仍然可以添加带注释的新EJB而不是ejb-jar.xml

存在具有最旧EJB的遗留代码库,其中所有现有EJBS都在ejb-jar.xml中配置

jakarta-ee ejb cdi ejb-jar.xml
1个回答
0
投票

我很害怕,部署描述符version="2.1"中的这个小标签告诉应用程序服务器您的应用程序是Java EE 2.1应用程序,它将相应地进行处理。所有新的规范功能将不可用。另外,我很高兴从Java-EE 2升级到5的步骤如此之大,以至于如果不更改代码就无法将您的应用程序变成JavaEE 5+应用程序。我的意思是,Java EE 5中删除的所有样板代码(Home,Remote等接口)似乎仍在您的项目中。但是我可能是错的,我还不那么老,从版本5开始使用JEE。

© www.soinside.com 2019 - 2024. All rights reserved.