我定义了一个界面。
@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
类实际上是一个子资源。我不知道区别。
这个问题有两个非常好的主题。
一个使用ResourceContext,另一个使用Inject。
两个主题都说他们有效,但我只用@Inject
成功了。
答案 0 :(得分:2)
如果提供的信息很少,您可以尝试两种快速选项:
如果您的项目/容器已启用CDI,则仅保留@Inject
@注入 private MessageService messageService;
只留下@EJB,你真的需要beanName吗?
@EJB private MessageService messageService;
<强> [UPDATE] 强> 否则,请查看应用服务器启动日志,并查看是否已部署该bean。