我正在尝试部署一个war文件,以便在WildFly群集上运行。在执行GET请求时,会出现NullPointerException,因为注入失败,而且引用显然为null。
SomeDao.java
import java.util.List;
import java.util.UUID;
import javax.ejb.Local;
@Local
public interface SomeDao {
public List<MyEntity> listAll();
public void store(MyEntity entity);
}SpecializedDao.java
import java.util.List;
import java.util.UUID;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class SpecializedDao implements SomeDao {
@PersistenceContext(unitName="primary")
protected EntityManager entityManager;
public SpecializedDao() {}
@Override
public List<MyEntity> listAll() {
return this.entityManager
.createQuery("SELECT entity FROM MyEntity entity", MyEntity.class)
.getResultList();
}
@Override
public void store(MyEntity entity) {
entityManager.getTransaction().begin();
entityManager.persist(entity);
entityManager.getTransaction().commit();
}
}然后,有一个端点需要注入一个SpecializedDao实例。
MyEndpoint.java
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Stateless
@Path("/something")
public class MyEndpoint {
@EJB
private SomeDao dao;
@GET
@Path("/test")
@Produces({MediaType.APPLICATION_JSON})
public Response test() {
MyEntity testEntity = new MyEntity("something", "something");
dao.store(testEntity);
return Response.ok("All done!").build();
}
}beans.xml
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.2" bean-discovery-mode="annotated">
</beans>NullPointerException是在dao.store(testEntity)启动的,因为dao引用了一个空对象。我非常肯定persistence.xml文件是正确的,因为EntityManager在另一个测试用例上工作,所以我认为问题在注入。
我在哪里做错了什么?
发布于 2018-09-18 06:58:29
其他你可以检查的东西。
java.inject.@Inject )(而不是使用@EJB)的bean时才有效。
@注入专用SomeDao刀;发布于 2018-09-17 20:23:50
你没有忘记放一个"beans.xml“文件(在WEB/META文件夹下)吗?
https://stackoverflow.com/questions/52369604
复制相似问题