Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Weblogic无法在静态字段中注入@PersistenceContext_Java_Jpa_Weblogic - Fatal编程技术网

Java Weblogic无法在静态字段中注入@PersistenceContext

Java Weblogic无法在静态字段中注入@PersistenceContext,java,jpa,weblogic,Java,Jpa,Weblogic,我对Weblogic不是很熟练,也许这是一个愚蠢的问题,但我无法理解如果将持久性上下文注入到静态字段中,为什么部署会失败 @PersistenceContext(unitName=“name”) 私有静态实体管理器em; 不应使用静态修饰符,请使用非静态变量@Vincenzo和我是同事,因此我们将通知您,他通过在生产模式下配置Weblogic解决了此问题 原因仍然不清楚,但目前这并不重要,因为。。。它起作用了 谢谢,这肯定是一个解决方案,但我很确定这是一个配置错误的问题,因为我可以将它部署到另

我对Weblogic不是很熟练,也许这是一个愚蠢的问题,但我无法理解如果将持久性上下文注入到静态字段中,为什么部署会失败

@PersistenceContext(unitName=“name”)
私有静态实体管理器em;

不应使用
静态
修饰符,请使用非静态变量

@Vincenzo和我是同事,因此我们将通知您,他通过在生产模式下配置Weblogic解决了此问题


原因仍然不清楚,但目前这并不重要,因为。。。它起作用了

谢谢,这肯定是一个解决方案,但我很确定这是一个配置错误的问题,因为我可以将它部署到另一个weblogic实例上。此外,为什么不能在静态字段中注入呢?因为spring IoC容器不管理静态资源,所以JEE容器并不广泛支持AIK静态注入,因为它的语义不清楚(例如,如何处理跨应用程序共享的类,这在理论上可能发生在某些类加载器配置中);此外,
EntityManager
需要在某个点关闭,这使得
@PersistenceContext
的静态注入特别有问题,因此请注意
EntityManager
s(与实体管理器工厂不同)创建非线程安全(通常是)事务范围对象的成本很低,因此将单个全局
EntityManager
绑定到静态字段几乎毫无意义
java.lang.IllegalArgumentException: Field "em" in class "class_name" is defined as injection target with annotation @PersistenceContext, but "em" cannot be declared as static field.
    at weblogic.j2ee.dd.xml.validator.injectiontarget.BaseValidator.error(BaseValidator.java:132)
    at weblogic.j2ee.dd.xml.validator.injectiontarget.BaseValidator.error(BaseValidator.java:149)
    at weblogic.j2ee.dd.xml.validator.injectiontarget.J2EEValidator.checkModifier(J2EEValidator.java:28)
    at weblogic.j2ee.dd.xml.validator.AbstractAnnotationValidator.checkField(AbstractAnnotationValidator.java:57)
    at weblogic.j2ee.dd.xml.validator.AbstractAnnotationValidator.validate(AbstractAnnotationValidator.java:26)
    at weblogic.j2ee.dd.xml.validator.AnnotationValidatorVisitor.visitInjectionTargetBean(AnnotationValidatorVisitor.java:48)
    at weblogic.j2ee.dd.xml.validator.AnnotationValidatorVisitor.visit(AnnotationValidatorVisitor.java:25)
    at weblogic.descriptor.internal.AbstractDescriptorBean.accept(AbstractDescriptorBean.java:1448)
    at weblogic.descriptor.internal.AbstractDescriptorBean.accept(AbstractDescriptorBean.java:1452)
    at weblogic.descriptor.internal.AbstractDescriptorBean.accept(AbstractDescriptorBean.java:1452)
    at weblogic.descriptor.internal.AbstractDescriptorBean.accept(AbstractDescriptorBean.java:1452)
    at weblogic.descriptor.internal.AbstractDescriptorBean.accept(AbstractDescriptorBean.java:1452)
    at weblogic.j2ee.dd.xml.BaseJ2eeAnnotationProcessor.validate(BaseJ2eeAnnotationProcessor.java:205)
    at weblogic.j2ee.dd.xml.BaseJ2eeAnnotationProcessor.validate(BaseJ2eeAnnotationProcessor.java:197)
    at weblogic.ejb.container.metadata.EjbAnnotationProcessor.processAnnotations(EjbAnnotationProcessor.java:260)
    at weblogic.ejb.container.metadata.EjbDescriptorReaderImpl.processAnnotations(EjbDescriptorReaderImpl.java:364)
    at weblogic.ejb.container.deployer.EJBMetadataHandler.processAnnotations(EJBMetadataHandler.java:164)
    at weblogic.ejb.container.deployer.EJBMetadataHandler.processAnnotations(EJBMetadataHandler.java:157)
    at weblogic.ejb.container.deployer.EJBModule.processAnnotations(EJBModule.java:175)
    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:370)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:295)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
    at weblogic.work.ContextWrap.run(ContextWrap.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:670)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)