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://127.0.0.1:8080/helloworld/servlet
。
您应该看到 调用 EJB...
。这意味着您设法调用了 Servlet。您还应该看到 Hello World!
。如果您看到一个 Java 异常文本,则表示 Servlet 无法与 EJB 通信。您可以通过更改代码中的文本并重新部署 EAR 来验证文本是否来自 EJB。