Jakarta ee 在所有现有ejb都配置在ejb-jar.xml中的遗留项目中,是否可以使用ejb注释和CDI

Jakarta ee 在所有现有ejb都配置在ejb-jar.xml中的遗留项目中,是否可以使用ejb注释和CDI,jakarta-ee,ejb,cdi,ejb-jar.xml,Jakarta Ee,Ejb,Cdi,Ejb Jar.xml,有一个使用最旧EJB的遗留代码库,其中所有现有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>ABean</ejb-name> <home>

有一个使用最旧EJB的遗留代码库,其中所有现有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>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>
....
新的本地无状态ejb代码如下所示:

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

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

我很惊讶,部署描述符
version=“2.1”
中的这个小标记告诉应用程序服务器您的应用程序是Java EE 2.1应用程序,它将相应地处理它。所有新的等级库功能将不可用。另外,我还感到震惊的是,从JavaEE2到JavaEE5的步骤太大了,如果没有代码更改,您将无法使您的应用程序成为JavaEE5+应用程序。我的意思是,在JavaEE5(家庭、远程等接口)中删除的所有锅炉板代码似乎仍在您的项目中。但我可能错了,我还不算太老,在版本5中开始使用JEE。

我很惊讶,部署描述符
version=“2.1”
中的这个小标记告诉应用服务器您的应用程序是Java EE 2.1应用程序,它将相应地处理它。所有新的等级库功能将不可用。另外,我还感到震惊的是,从JavaEE2到JavaEE5的步骤太大了,如果没有代码更改,您将无法使您的应用程序成为JavaEE5+应用程序。我的意思是,在JavaEE5(家庭、远程等接口)中删除的所有锅炉板代码似乎仍在您的项目中。但我可能错了,我不是那么老,在版本5中开始使用JEE。

非常感谢您的回答。我说得很有道理。如果我更新整个多模块项目中所有
ejbjar.xml
中的
ejbjar
标记,会怎么样?Java被认为是向后兼容的,也就是说,Java语言是向后兼容的。“JavaEE”是一个规范,它定义了JavaEE应用程序服务器和JavaEE应用程序之间的契约。从JavaEE5开始,直到Jakarta8,您实际上只需更新版本标签,您的应用程序就可以使用新的规范。我的理解是JEE2->JavaEE5是一个突破性的变化。JavaEE5规范消除了许多锅炉板代码,即主接口。因此,要进一步改进,您还必须更改代码。取决于你的应用程序的复杂性,这可能是可能的,也可能是不可能的…非常感谢你的回答。我说得很有道理。如果我更新整个多模块项目中所有
ejbjar.xml
中的
ejbjar
标记,会怎么样?Java被认为是向后兼容的,也就是说,Java语言是向后兼容的。“JavaEE”是一个规范,它定义了JavaEE应用程序服务器和JavaEE应用程序之间的契约。从JavaEE5开始,直到Jakarta8,您实际上只需更新版本标签,您的应用程序就可以使用新的规范。我的理解是JEE2->JavaEE5是一个突破性的变化。JavaEE5规范消除了许多锅炉板代码,即主接口。因此,要进一步改进,您还必须更改代码。根据应用程序的复杂程度,这可能是可能的,也可能是不可能的。。。
@Stateless
public class TestEJB {
    public void test() {
        System.out.println("I am the first EJB injected with CDI");
    }
}