env:JBoss 7.1.1,jdk 1.7,WELD 模块升级到 1.1.10(以防万一)
我有一个要添加到 WEB-INF\lib 目录的 JPA 项目。它包含我的实体和 DAO 对象,其中有实体管理器注入。我正在使用自定义注释来限定在资源类中生成的 PersistenceContext。我已经在这个项目中运行了 Arquillian 测试以确保它正常工作。
我在 JPA jar 的 \META-INF\ 目录和 war 文件的 \WEB-INF\ 目录中有一个 beans.xml 文件。我什至把它打印出来放在我的桌子上,仍然没有帮助。
在我的战争文件中,我有一个从 JPA jar 注入 DAO 对象的类。它不起作用,它为空。
我从带有 CDI 的 jboss(没有 jpa jar)中找到了示例,它可以工作。
我已经寻找示例,但找不到任何带有 jpa jar 的示例。谁能指出我在哪里有一个带有 JPA 实用程序 jar 的 jee6 Web 应用程序示例,它使用注释将 JPA jar 中的某些内容注入到战争类中?
非常感谢您阅读此请求。
- - - - - - - - - - 附加信息 - - - - - - - - -
战争文件的结构
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) Job DEFAULT.extractDir 抛出 JobExecutionException: : org.quartz.JobExecutionException: java.lang.NullPointerException [参见嵌套异常:java. lang.NullPointerException] at com.xyz.asp.commsrv.scheduler.jobs.DirScanJob.execute(DirScanJob.java:149) [classes:] at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz -2.1.7.jar:] at 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) [类:] ... 还有 2 个
这是注入了 DAO 对象的类。这是一个石英调度程序作业,它在 jboss 启动期间由 ServletContextListener 启动:
@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(){
...
}
}