我有那个 JAX-RS 网络服务:
@Path("/my")
public class MyWS {
@Inject
private MyService myService;
@POST
@Path("/save")
@Consumes("application/json")
public void save(SaveParam saveParam) {
myService.save(saveParam);
}
}
并且@Stateless
服务:
@Stateless
public class MyService {
@PersistenceContext
protected EntityManager entityManager;
@TransactionAttribute
public void save(SaveParam saveParam) {
entityManager.persist(saveParam);
}
}
使用 JBoss EAP 6.2,myService 在到达save
方法时始终null
(而不是注入)。
我试图@ApplicationScoped
添加到MyWS
类中,但同样的行为正在发生(NullPointerException
)。唯一的解决方案是将MyWS
也声明为@Stateless
,但这实际上没有任何意义,不是吗?
这是 JBoss EAP 中的错误吗?
我所有的类都在同一个war
项目中,我有一个使用 CDI 1.0 规范的WEB-INF/beans.xml
。我还有一个类扩展javax.ws.rs.core.Application
并声明@ApplicationPath
。
我想如果您在 web.xml 中配置 REST 服务,这是一个错误。我有同样的问题,我对此感到疯狂。只需清理网络.xml它不应该有任何与 REST 相关的内容。@ApplicationPath对于所有 REST 设置来说已经足够了。