EJB不作为接口注入

时间:2016-10-04 09:29:04

标签: dependency-injection ejb

我定义了一个界面。

@Local
public interface MessageService {
}

并实施。

@Stateless
public class MessageServiceSome implements MessageService {
}

当我尝试将其注入我的资源类时,我得到null

//@Path("/messages") // I'M NOT GOING TO MAKE THIS STATELESS!!!
public class MessagesResource {

    // none of follwoing options works
    // leaves the field null
    @Inject
    //@EJB
    //@EJB(beanName = "MessageServiceSome")
    private MessageService messageService;
}

我该如何解决这个问题?

更新

我想我必须承认我的问题不够好。

MessagesResource类实际上是一个子资源。我不知道区别。

这个问题有两个非常好的主题。

  1. https://stackoverflow.com/a/36291890/330457
  2. https://stackoverflow.com/a/24670218/330457
  3. 一个使用ResourceContext,另一个使用Inject

    两个主题都说他们有效,但我只用@Inject成功了。

1 个答案:

答案 0 :(得分:2)

如果提供的信息很少,您可以尝试两种快速选项:

  1. 如果您的项目/容器已启用CDI,则仅保留@Inject

    @注入 private MessageService messageService;

  2. 只留下@EJB,你真的需要beanName吗?

    @EJB private MessageService messageService;

  3. 两个人应该解决这个问题。

    <强> [UPDATE] 否则,请查看应用服务器启动日志,并查看是否已部署该bean。