部署远程EJB时出现DeploymentException

时间:2011-02-09 21:02:45

标签: java-ee ejb jboss5.x

我在运行动态Web项目时遇到此异常

Error installing to Real: name=vfsfile:/C:/jboss-5.0.1.GA_1/jboss-5.0.1.GA/server/default/deploy/BookMartEAR.ear/ state=PreReal mode=Manual requiredState=Real
org.jboss.deployers.spi.DeploymentException: Error deploying BookMartEJB.jar: Container jboss.j2ee:ear=BookMartEAR.ear,jar=BookMartEJB.jar,name=BookMartBean,service=EJB3 failed to resolve persistence unit BookMartEjb
.
.
.
Caused by: java.lang.IllegalArgumentException: Can't find a persistence unit named 'BookMartEjb' in AbstractVFSDeploymentContext@26167457{vfsfile:/C:/jboss-5.0.1.GA_1/jboss-5.0.1.GA/server/default/deploy/BookMartEAR.ear/BookMartEJB.jar/}

EJB,EAR和Web项目名称如上所述。

persistence.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="BookMartEJB" transaction-type="JTA">
        <jta-data-source>MySqlDS</jta-data-source>
        <class>com.misys.book.Book</class>
        <class>com.misys.book.Sale</class>
        <class>com.misys.book.Saleitem</class>
        <class>com.misys.book.Customer</class>
        <class>com.misys.book.User</class>
    </persistence-unit>
</persistence>

这个xml文件有什么问题吗? 我正在使用JBoss AS服务器和MySql数据库。

请建议我哪里出错了。另外,请说明是否需要任何其他信息。

1 个答案:

答案 0 :(得分:2)

您的EAR中persistence.xml的位置是什么?它应该位于EJB模块的META-INF文件夹中。如果它不存在(例如它在EAR根目录或Web模块中),那么它确实无法找到。

此外,如果最终找到持久性单元,您可能会遇到下一个问题。您的数据源设置为MySqlDS,但最有可能是java:/MySqlDS,因为这是JBoss AS将数据源绑定到的位置。

与您的问题无关,但您可能不必明确列出您的类。除非您不希望发生运行时扫描,否则您还必须包含<exclude-unlisted-classes/>元素。 (哦,最后一件事JTA已经是默认值,所以你也可以省略transaction-type =“JTA”)