Jakarta EE 编程/无状态会话 Bean
外观
这是一个使用 Eclipse 使用无状态会话 EJB 的简短教程。
- 在 Eclipse 中,右键单击项目资源管理器视图。
- 选择新建 -> EJB 项目。如果 EJB 项目未出现,请选择新建 -> 其他,选择 EJB -> EJB 项目,然后单击下一步。
- 在“项目名称”中,键入
helloworld-ejb。 - 单击完成。
- 右键单击项目资源管理器视图。
- 选择新建 -> 会话 Bean (EJB 3.x)。如果会话 Bean (EJB 3.x) 未出现,请选择新建 -> 其他,选择 EJB -> 会话 Bean (EJB 3.x),然后单击下一步。
- 在“Java 包”中,键入
org.wikibooks.en。 - 在“类名”中,键入
MyFirstEJB。保留其他选项不变。 - 单击完成。
- 在同一包中,创建一个新的接口
MyFirstEJBRemote。 - 在其中添加以下方法签名
public String sayHello();
- 在接口签名前添加以下注释
@Remote
- 打开
MyFirstEJB类。 - 删除注释
@LocalBean。 - 在其中添加以下方法
public String sayHello() {
return "Hello World!";
}
- 右键单击项目。
- 选择导出 -> EJB JAR 文件。如果您没有找到 EJB JAR 文件选项,请点击导出...,选择 EJB -> EJB JAR 文件,然后点击下一步>。Web 项目应命名为
helloworld。 - 选择一个目标位置。
- 单击完成。
- 转到您创建 JAR 的文件夹。
您应该看到一个名为 helloworld-ejb.jar 的 JAR 文件。您可以删除它。
- 右键单击项目资源管理器视图。
- 选择新建 -> 企业应用程序项目。
- 在“项目名称”中,键入
helloworld-ear。 - 单击下一步。
- 选择
helloworld-ejb项目。 - 单击完成。您应该有一个名为
helloworld-ear的新项目。除了其他内容外,它还应包含部署描述符:helloworld-ear/Modules/EJB helloworld-ejb.jar。 - 右键单击导出 -> EAR 文件,选择一个目标位置,然后单击完成。
- 创建 EAR 文件的副本,并将扩展名更改为 .zip。
- 浏览 ZIP 文件的内容。
您应该在其中看到名为 helloworld-ejb.jar 的 JAR 文件。您可以删除 ZIP 文件。
- 将您的 EAR 文件复制/粘贴到应用程序服务器的部署文件夹中。
- 启动您的应用程序服务器。
现在您的 EJB 可用。不幸的是,我们还不知道如何使用它。
- 关闭您的应用程序服务器。
- 重新使用您在此页面中创建的 WAR 项目。
- 右键单击 Java 资源/src。
- 选择新建 -> 包。
- 在名称中,键入
org.wikibooks.en。 - 右键单击新包。
- 选择新建 -> Servlet。
- 在类名中,键入
EJBServlet。 - 在类中键入以下代码
package org.wikibooks.en;
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EJBServlet extends HttpServlet {
private static final long serialVersionUID = 5847939167723571084L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = new PrintWriter(response.getOutputStream());
out.println("Calling the EJB...");
try {
InitialContext initialContext = new InitialContext();
MyFirstEJB myFirstEJB = (MyFirstEJB) initialContext
.lookup("java:global/experience4/experience3/MyFirstEJB");
out.println(myFirstEJB.sayHello());
} catch (Exception e) {
out.println(e);
}
out.flush();
out.close();
}
}
- 如果您使用的是除 JBoss 之外的其他应用程序服务器,则可能需要更改查找
java:global/experience4/experience3/MyFirstEJB。 - 在 WebContent/WEB-INF 中打开
web.xml文件。 - 在第一个标记
<servlet>之前,键入以下代码
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>org.wikibooks.en.EJBServlet</servlet-class>
</servlet>
- 在第一个标记
<servlet-mapping>之前,键入以下代码
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
- 右键单击导出 -> EAR 文件。
- 对于目标位置,选择应用程序服务器的部署文件夹。
- 单击完成。
- 启动您的应用程序服务器。
- 转到 URL
https://:8080/helloworld/servlet。
您应该看到 调用 EJB... 。这意味着您设法调用了 Servlet。您还应该看到 Hello World! 。如果您看到一个 Java 异常文本,则表示 Servlet 无法与 EJB 通信。您可以通过更改代码中的文本并重新部署 EAR 来验证文本是否来自 EJB。
