在JBoss EAP 6.2中的JAX-RS类中@Inject @Stateless服务时的NPE

时间:2015-04-27 10:17:34

标签: jboss ejb jax-rs jboss-eap-6

我有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在到达null方法时总是save(未注入)。

我已尝试将@ApplicationScoped添加到MyWS类,但同样的行为正在发生(NullPointerException)。唯一的解决方案是将MyWS声明为@Stateless,但这不是真的有任何感觉,有吗?

这是JBoss EAP中的错误吗?

我的所有课程都在同一个war项目中,我使用CDI 1.0规范WEB-INF/beans.xml。我还有一个课程延长javax.ws.rs.core.Application并声明@ApplicationPath

1 个答案:

答案 0 :(得分:0)

如果您在web.xml中配置REST服务,我想这是一个错误。 我有同样的问题,我对此感到疯狂。 只需清理web.xml,就不应该有任何与REST相关的内容。 @ApplicationPath足以应对所有REST设置。