ejb-jar.xml 中缺少值



当尝试在 glassfish 4.0 中部署一个成熟的企业应用程序(包括战争和 jar 项目)时(使用 NetBeans 7.3.1),我遇到了与这个问题类似的问题,说 jar 无效,因为它包含零 EJB(这不是真的,因为我的应用程序 jar 包含 4 个实体类及其对应的会话 bean 和本地接口)。由于该帖子中的解决方案是添加 ejb-jar.xml然后我通过添加我的部署描述符来做同样的事情,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
   <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee" 
         version = "3.1"
         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">

    <enterprise-beans>
        <session>
            <ejb-name>EnginDao</ejb-name>
            <ejb-class>com.crystaleez.dao.EnginDao</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
        <session>
            <ejb-name>AdresseDao</ejb-name>
            <ejb-class>com.crystaleez.dao.AdresseDao</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
        <session>
            <ejb-name>AutomobilisteDao</ejb-name>
            <ejb-class>com.crystaleez.dao.AutomobilisteDao</ejb-class>
            <transaction-type>Container</transaction-type>
            <session-type>Stateless</session-type>
        </session>
        <session>
            <ejb-name>GaragisteDao</ejb-name>
            <ejb-class>com.crystaleez.dao.GaragisteDao</ejb-class>
            <transaction-type>Container</transaction-type>
            <session-type>Stateless</session-type>
        </session>

    </enterprise-beans>

</ejb-jar>

所以我得到了以下异常,说部署应用程序时发生的此异常,ejb-jar.xml 的内容无效,并且期望值之一"{"http://java.sun.com/xml/ns/javaee":拦截器、"http://java.sun.com/xml/ns/javaee":关系、"http://java.sun.com/xml/ns/javaee":程序集描述符、"http://java.sun.com/xml/ns/javaee":ejb-client-jar}'(对我来说是法语,我找不到更改 NetBeans 中 glassfish 日志记录的方法)

坟墓:申请例外 [tunmecanique-ear-1.0-SNAPSHOT] : org.xml.sax.SAXParseException; 行号: 16;列数: 24;Fichier de descripteur de déploiement META-INF/ejb-jar.xml dans l'archive [tunmecanique-ejb-1.0-SNAPSHOT_jar]。 cvc-complex-type.2.4.a : Contenu non valide trouvé à partir de l'élément 'enterprise-beans'.L'une des valeurs '{"http://java.sun.com/xml/ns/javaee":interceptors, "http://java.sun.com/xml/ns/javaee":关系, "http://java.sun.com/xml/ns/javaee":程序集描述符, "http://java.sun.com/xml/ns/javaee":ejb-client-jar}' est attendue. org.xml.sax.SAXParseException;行号: 16;列数: 24; Fichier de descripteur de déploiement META-INF/ejb-jar.xml dans L'archive [tunmecanique-ejb-1.0-SNAPSHOT_jar]. CVC-复合型.2.4.a : Contenu non valide trouvé à partir de l'élément 'enterprise-beans'. L'une des valeurs '{"http://java.sun.com/xml/ns/javaee":interceptors, "http://java.sun.com/xml/ns/javaee":关系, "http://java.sun.com/xml/ns/javaee":程序集描述符, "http://java.sun.com/xml/ns/javaee":ejb-client-jar}' est attendue. 在 com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:324) 在 com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:245) 在 com.sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:665) 在 com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:391) 在 com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:271) 在 com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:280) 在 com.sun.enterprise.deployment.archivist.ApplicationArchivist.readModulesDescriptors(ApplicationArchivist.java:611) 在 com.sun.enterprise.deployment.archivist.ApplicationArchivist.openWith(ApplicationArchivist.java:229) 在 com.sun.enterprise.deployment.archivist.ApplicationFactory.openWith(ApplicationFactory.java:232) 在 org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:188) 在 org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:222) 在 org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:96) 在 com.sun.enterprise.v3.server.ApplicationLifecycle .loadDeployer(ApplicationLifecycle .java:878) 在 com.sun.enterprise.v3.server.ApplicationLifecycle .setupContainerInfos(ApplicationLifecycle .java:818) 在 com.sun.enterprise.v3.server.ApplicationLifecycle .deploy(ApplicationLifecycle .java:374) 在 com.sun.enterprise.v3.server.ApplicationLifecycle .deploy(ApplicationLifecycle .java:219) 在 org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:356) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)

我的项目上没有任何这些值(实际上我不知道什么是拦截器,也不知道异常所说的其他必需值)(我不知道为什么 ejb-jar.xml 是强制性的,为什么没有办法自动生成它)我只需要让我的项目成功部署。

感谢您的帮助!

问题可能是您在最后两个声明中对session-typetransaction-type有不同的顺序。请尝试以下操作:

    <session>
        <ejb-name>AutomobilisteDao</ejb-name>
        <ejb-class>com.crystaleez.dao.AutomobilisteDao</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
    </session>
    <session>
        <ejb-name>GaragisteDao</ejb-name>
        <ejb-class>com.crystaleez.dao.GaragisteDao</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
    </session>

相关内容

  • 没有找到相关文章

最新更新