我正在 Eclipse Juno 中开发一个包含EJB 3.1和Dynamic Web Project的项目。
EJB 类称为FirstBean,Servlet 称为EJB31ServletClient,我实现的只是使其在同一台服务器上工作。我读过我需要设置 InitialContext.lookup 但几乎所有示例都是为 JavaSE 应用程序制作的。
我想要达到的目标:
在 Glassfish 3.1.2.2 服务器中部署 EJB Jar,并将动态 Web 项目部署在不同的 GlassFish 服务器中。
在 EJB31ServletClient 中调用 sayHello() 方法。
这是我的代码:
EJB 是一个非常简单的无状态会话 Bean ,它具有仅显示一条消息的无接口视图:
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class FirstBean {
public FirstBean() {
}
public String sayHello() {
return "Hello";
}
}
动态 Web 项目只有一个 Servlet,代码如下:
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.theopentutorials.businesslogic.FirstBean;
@WebServlet("/EJB31ServletClient")
public class EJB31ServletClient extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
FirstBean bean;
public EJB31ServletClient() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(bean.sayHello());
}
}