env: JBoss 7.1.1、jdk 1.7、1.1.10 にアップグレードされた WELD モジュール (念のため)
WEB-INF\lib ディレクトリに追加する JPA プロジェクトがあります。これには、Entity Manager が挿入したエンティティと DAO オブジェクトが含まれています。リソース クラスで生成される PersistenceContext を修飾するために、カスタム アノテーションを使用しています。このプロジェクトで Arquillian テストを実行して、動作することを確認しました。
JPA jar の \META-INF\ ディレクトリと war ファイルの \WEB-INF\ ディレクトリに beans.xml ファイルがあります。私はそれを印刷して机の上に置きましたが、それでも役に立ちませんでした。
war ファイル内に、JPA jar から DAO オブジェクトを注入するクラスがあります。機能していません。null です。
CDIを使用したjboss(jpa jarなし)の例を見つけましたが、動作します。
例を探しましたが、jpa jar では見つかりません。注釈を使用して JPA jar から war クラスに何かを注入する、JPA ユーティリティ jar を使用した jee6 Web アプリの例がある場所を教えてもらえますか?
この嘆願書をお読みいただき、誠にありがとうございます。
- - - - - - - - - - 追加情報 - - - - - - - - -
warファイルの構造
META-INF
->maven
-->com.xyz
--->web
---->pom.properties
---->pom.xml
->MANIFEST.MF
WEB-INF
->classes
->lib
-->entities.jar
->beans.xml
->faces-config.xml
->web.xml
スタック トレース: 22:23:12,011 INFO [org.quartz.core.JobRunShell] (DefaultQuartzScheduler_Worker-2) ジョブ DEFAULT.extractDir が JobExecutionException をスローしました: org.quartz.JobExecutionException: java.lang.NullPointerException [ネストされた例外を参照してください: java. lang.NullPointerException] com.xyz.asp.commsrv.scheduler.jobs.DirScanJob.execute(DirScanJob.java:149) [クラス:] org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz -2.1.7.jar:] org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) で [quartz-2.1.7.jar:] 原因: com.xyz での java.lang.NullPointerException。 asp.commsrv.scheduler.jobs.DirScanJob.execute(DirScanJob.java:140) [classes:] ... 2 つ以上
これは、DAO オブジェクトが注入されたクラスです。これは、jboss の起動時に ServletContextListener によって開始される Quartz スケジューラ ジョブです。
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class DirScanJob implements Job{
...
@Inject
FiletracksentHome ftsHome;
@Override
public void execute(JobExecutionContext context) throw JobExecutionException{
...
BigDecimal bd = ftsHome.nextId()
}
}
このクラスはentities.jarにあります:
@Stateless
public class FiletracksentHome{
@Inject
@DatabaseEntities
private EntityManager entityManager;
public BigDecimal nextId(){
...
}
}