2016-05-15 57 views
0

我testBean就的Java EJB不注射

@Stateless 
public class TestBean implements TestLocal { 
    public String getMessage(String name) { 
     return "Test "+ name; 
    } 
} 

我的界面

@Local 
public interface TestLocal { 
    public String getMessage(String name); 
} 

在這裏,我用它

@EJB 
private TestLocal testLocal; 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    String result;=testLocal.getMessage("ASDASD"); 
    req.getSession().setAttribute("Test1",result); 
    RequestDispatcher rd=req.getRequestDispatcher("Index.jsp"); 
    rd.forward(req,resp); 
} 

,我得到的結果行NullPointerException異常。

+0

您應該在同一個EAR項目中擁有ejb和servlet。否則,請使用遠程訪問。 – Riadh

回答

-2

EJB只在託管的bean中注入。一個bean在被某個注入容器管理時被管理,比如通過JSF自己的@ManagedBean,CDI的@Named等等。你甚至可以在另一個EJB中注入一個EJB。您不能在非託管類中注入EJB。 我沒有看到你的班級由注塑容器管理。

+0

謝謝。我如何解決這個問題沒有其他框架? – Denis

+0

您使用任何注射器容器....?如果是這樣,那麼必須使用命令。示例:如果您使用Spring作爲注入容器,則可以通過在類級別添加@Component annoation將類設置爲託管類。 – Dash

+0

我不使用注射容器 – Denis