2017-05-31 9 views
0

私は、私の大規模なサーバーに展開したいクラスを用意しました。デプロイメントでmy_bddという名前の永続ユニットが見つかりました。wildfly EJB EAR

私はpersistence.xmlファイルを作成し、古典的なMavenのaché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> 

、私のEJBである私のColisDao.java、内部オブジェクト、私はPersistenceContextがbdd_colisという名前になることを確信しました。

@Stateless 
    public class ColisDao { 

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

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

お勧めはありますか? JPA仕様の§8.2当たりとして

答えて

1

永続ユニットは、persistence.xmlファイルによって定義されます。 META-INFディレクトリにpersistence.xmlファイルが含まれているjarファイルまたはディレクトリは、永続性ユニットのルートと呼ばれます。 Java EE環境では、永続ユニットのルートは次のいずれかでなければなりません。
•EJB-JARファイル
•WARファイルのWEB-INF/classesディレクトリ[87]
• EARライブラリ・ディレクトリにjarファイルのアプリケーション・クライアントJARファイル•

したがって•WARファイル
のWEB-INF/libディレクトリには、src/main/resourcesディレクトリにsrc/main/webappディレクトリからあなたMETA-INF/persistence.xmlファイルを移動します。

MavenはこれをWARファイルのWEB-INF/classesディレクトリにパッケージします。

+0

こんにちは、あなたの答えのおかげで、私は今晩試して、後であなたに戻ってきます:) –

関連する問題