2016-10-04 61 views
1

我定義了一個接口。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; 
} 

我該如何解決這個問題?

UPDATE

我想我不得不承認,我的問題是不夠好。

MessagesResource類實際上是一個子資源。我不知道區別。

這個問題有兩個非常好的線程。

  1. https://stackoverflow.com/a/36291890/330457
  2. https://stackoverflow.com/a/24670218/330457

一種是使用ResourceContext和另一種是採用Inject

這兩個線程都說他們工作,但我只成功@Inject

回答

2

利用所提供的信息很少,你有可能有兩個快速選項,你可以嘗試:

  1. 休假@Inject而已,如果你的項目/容器CDI啓用

    @Inject 私人MessageService messageService;

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

    @EJB private MessageService messageService;

就應該解決兩個問題。

[更新] 否則,請查看應用服務器啓動日誌,並查看bean是否已部署。