@EJB在外部项目WFLYEJB0406中无法在Servlet中工作

时间:2017-05-27 14:01:15

标签: java eclipse servlets java-ee

您好我有3个项目:EAR,EJB和(动态)WEB。我正在使用eclipse和wildfly 10.x.这是我在EJB项目中得到的:

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";
    }
}

以下是我在动态网络项目中所拥有的内容:

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

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

1 个答案:

答案 0 :(得分:0)

在我看来,你需要先了解@EJB和@Inject之间的区别,你可以从中检查:link

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