2017-05-31 67 views
0

我有一个我想要在我的狂野10服务器上部署的类。无法在部署wildfly中找到名为my_bdd的持久性单元EJB EAR

我创建了一个persistence.xml文件,并遵循经典的mavenachétype。 这里是我的项目结构:

├── pom.xml 
├── README.md 
├── src 
│   ├── main 
│   │   ├── java 
│   │   │   └── dataRecovery 
│   │   │    ├── ColisDao.java 
│   │   │    ├── Colis.java 
│   │   │    ├── FillDataBase.java 
│   │   │    ├── GenerateDataBase.java 
│   │   │    └── jaxws 
│   │   │     ├── FillDataBase.java 
│   │   │     ├── FillDataBaseResponse.java 
│   │   │     └── IOExceptionBean.java 
│   │   ├── resources 
│   │   └── webapp 
│   │    ├── META-INF 
│   │    │   └── persistence.xml 
│   │    ├── WEB-INF 
│   │    │   ├── beans.xml 
│   │    │   ├── cxf-beans.xml 
│   │    │   ├── jboss-deployment-structure.xml 
│   │    │   └── web.xml 
│   │    └── wsdl 
│   │     ├── filldatabase_schema1.xsd 
│   │     └── filldatabase.wsdl 
│   └── test 
│    ├── java 
│    └── resources 
└── target 
    ├── classes 
    │   └── dataRecovery 
    │    ├── Colis.class 
    │    ├── ColisDao.class 
    │    ├── FillDataBase.class 
    │    ├── GenerateDataBase.class 
    │    └── jaxws 
    │     ├── FillDataBase.class 
    │     ├── FillDataBaseResponse.class 
    │     └── IOExceptionBean.class 
    ├── m2e-wtp 
    │   └── web-resources 
    │    ├── META-INF 
    │    │   ├── MANIFEST.MF 
    │    │   └── maven 
    │    │    └── com.recovery 
    │    │     └── dataRecovery 
    │    │      ├── pom.properties 
    │    │      └── pom.xml 
    │    ├── WEB-INF 
    │    │   ├── beans.xml 
    │    │   ├── cxf-beans.xml 
    │    │   ├── jboss-deployment-structure.xml 
    │    │   └── web.xml 
    │    └── wsdl 
    │     ├── filldatabase_schema1.xsd 
    │     └── filldatabase.wsdl 
    ├── maven-status 
    │   └── maven-compiler-plugin 
    │    └── compile 
    │     └── default-compile 
    │      ├── createdFiles.lst 
    │      └── inputFiles.lst 
    └── test-classes 

问题是,当我想部署我FillDataBase.java类,我收到以下错误从我的服务器日志:

WFLYJPA0033: Can't find a persistence unit named bdd_colis in deployment \"dataRecovery-0.0.1-SNAPSHOT.war\""}, 
    "WFLYCTL0412: Required services that are not installed:" => [ 
     "jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".INSTALL", 
     "jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".beanmanager" 
    ], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [ 
     "jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".beanmanager]", 
     "jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".batch.environment is missing [jboss.deployment.unit.\"dataRecovery-0.0.1-SNAPSHOT.war\".beanmanager]" 
    ] 
} 

至于其他话题说,这可能是由于一个错误的persistence.xml文件,但我查了一下它,它似乎也不错:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.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_2_0.xsd"> 
    <persistence-unit name="bdd_colis" transaction-type="JTA"> 
     <jta-data-source>jdbc/DataSource</jta-data-source> 
     <class>dataRecovery.Colis</class> 
     <properties> 
      <property name="eclipselink.logging.level.sql" value="FINE" /> 
      <property name="eclipselink.logging.parameters" value="true" /> 
     </properties> 
    </persistence-unit> 

</persistence> 

此外,我ColisDao.java,这是我在EJB内对象,我精确地将PersistenceContext命名为bdd_colis。

@Stateless 
    public class ColisDao { 

     public static final String SELECT_ALL_COLIS = "select * from Colis;"; 

     @PersistenceContext(unitName="bdd_colis") 
     private EntityManager em; 
... 

有什么建议吗?

回答

1

按照JPA规范的第8.2节:

的持久化单元由persistence.xml文件定义。 META-INF目录包含persistence.xml文件的jar文件或目录称为持久性单元的根。在Java EE环境,持久性单元的根必须是下列之一:
•一个EJB-JAR文件
•WAR文件的WEB-INF/classes目录[87]
•jar文件中WAR文件
•在EAR库目录中的jar文件
•应用程序客户端JAR文件

因此的WEB-INF/lib目录下,从src/main/webapp目录移到你的META-INF/persistence.xml文件到src/main/resources目录。

然后,Maven会将其打包到WAR文件的WEB-INF/classes目录中。

+0

嗨,谢谢你的回答,今天晚上我会试试,待会儿回复你:) –

相关问题