我正在尝试将一个无状态的EJB注入我的EntityListner。调用了我的EntityListener的@PrePresist
方法,但注入的EJB解析为null
,因此引发了NullPointerException。
public class MyEntityListener {
@Inject
private MyService myService; // @Stateless EJB
@PrePersist
public void prePersist(MyEntity entity) {
final Foo foo = myService.getFoo(); // !! NPE thrown here!!
entity.setFoo(foo);
}
}
我在这里发现的前面的问题是关于这个问题的,JPA只提供JPA2.1上的CDI,但不提供JPA2.0上的CDI,但我使用的是JPA2.1。那么这里还有什么问题呢?
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
>
<persistence-unit name="MY_PU" transaction-type="JTA">
<jta-data-source>jdbc/local</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="ALL" />
</properties>
</persistence-unit>
</persistence>
将我的EJB注入到其他会话bean中运行良好,无论是使用EJB inection(@EJB
)还是CDI注入(@Inject
)。它只在EntityListner中失败。
我正在使用GlassFish 4.1和EclipseLink 2.5。2.
相关问题:在EntityListener中注入SessionScoped状态bean
代码中没有任何错误,该行为是由以下错误引起的:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=438105
该错误在EclipseLink 2.6中已修复。0.此版本的更新解决了我的问题。
http://www.eclipse.org/eclipselink/downloads/
jboss日志:- JBAS015876:开始部署“medmark.war”17:33:56948 INFO[org.jboss.as.ejb3.deployment.processors.ejbndibingsdeploymentunitprocessor](MSC服务线程1-8)部署单元部署“medmark.war”中名为HelloService的会话bean的JNDI绑定如下: EJB类:
CDI bean: 当我现在访问无状态EJB(例如从servlet访问)时,我希望testMethod使用与调用方的HttpSession相关联的CDI bean。因此,如果来自不同Browser/HTTP会话的两个客户机访问Servlet,它们都将得到不同的结果字符串。 我是否需要CDI而不是?如果需要,我如何为给定会话生成正确的bean实例?我想过也许可以使用BeanManager并搜索Ses
我有一个问题是将EJB注入到抽象类中,抽象类是我JSF CDI bean的父类。在我的项目中,我使用MyFaces CODI 1.0.5(ViewScope),Omniface 1.3,PrimeFaces 3.4.2和GlassFish3.1.2。 应用程序是一个EAR,抽象类位于EJB模块中,JSF CDI bean位于WAR模块中: 我的抽象类: 我的CDIBean: 当我部署应用程序并访问
我正在尝试将两个独立的战争迁移到一个耳朵里。 运行在WebLogic 12.2.1上,所以Java EE 7(CDI 1.1和EJB 3.1)。 每个WAR都包含相同的JAR库,其中包含许多@Stateless EJB和@Named CDI托管bean: 我已经执行了几个必需的步骤: 将包含ejb和CDI托管bean的ejb-cdi.jar的打包类型更改为ejb 将ejb-cdi.jar配置为po
我尝试使用最新的Qarkus配置工具:@ConfigMapping,所以我定义了一个GreetingConfig对象: 该配置被注入到CDI Singleton中: 单例被注入到JAX-RS过滤器和JAX-RS资源中 application.properties文件还包含: 应用程序在启动时崩溃: JAR-RS资源中的注入适用于服务的任何bean类型(@ApplicationScope或@Sing
我有一个带有Glassfish 3服务器的正常动态web项目。我有一个托管bean,它注入了一个无状态bean。与Mojarra2.1.6所有工作良好。 但是当我将javax.faces-2.2.7.jar(Mojarra)添加到Web-Inf lib文件夹并尝试访问我的站点时,我的“服务”得到一个Nullpointerexception。 XHTML: