2017-05-27 59 views
0

您好我有3个项目:EAR,EJB和(动态)WEB。我使用eclipse和wildfly 10.x.下面是我在EJB项目已经得到了:@EJB不能在外部项目的Servlet中工作WFLYEJB0406

package q.w.e; 

public interface Inter { 
    public String s(); 
} 

package q.w.e; 
public class Ert implements Inter { 
    @Override 
    public String s() { 
     return "hik"; 
    } 
} 

下面是我在动态Web项目:

package local.bb.lab.servlets; 

import java.io.IOException; 

import javax.ejb.EJB; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import q.w.e.*; 

public class Home extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    @EJB 
    Inter ert; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     request.getRequestDispatcher("/home.jsp").forward(request, response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doGet(request, response); 
    } 

} 

一切都非常简单。我使用EAR连接了项目。编译器看到的包和类,但我有这个错误:

WFLYEJB0406: No EJB found with interface of type 'q.w.e.Inter' for binding local.bb.lab.servlets.Home/ert 

我不知道为什么它仍然存在。这必须是一些配置问题,但我将它们连接起来就像在教程中显示的那样(采用文学相同的步骤)。

+0

你在哪里使用过@EJB Inter Ert?我似乎只是注入了它。 –

回答

0

在我看来,你需要知道的第一@EJB和@Inject之间的区别,你可以从这个检查:link

另一件事是你的代码是不是EJB这就是为什么你不能使用@EJB注释,您应该使用@Inject进行依赖注入。