我在运行动态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数据库。
请建议我哪里出错了。另外,请说明是否需要任何其他信息。
答案 0 :(得分:2)
您的EAR中persistence.xml
的位置是什么?它应该位于EJB模块的META-INF文件夹中。如果它不存在(例如它在EAR根目录或Web模块中),那么它确实无法找到。
此外,如果最终找到持久性单元,您可能会遇到下一个问题。您的数据源设置为MySqlDS
,但最有可能是java:/MySqlDS
,因为这是JBoss AS将数据源绑定到的位置。
与您的问题无关,但您可能不必明确列出您的类。除非您不希望发生运行时扫描,否则您还必须包含<exclude-unlisted-classes/>
元素。 (哦,最后一件事JTA已经是默认值,所以你也可以省略transaction-type =“JTA”)