使用依赖注入访问会话Bean
一个会话Bean对自己来说,只有有限的数值而已;想变得有价值,就需要由诸如servlet或JSF页面之类的客户端访问。在本节中,我们将看到如何使用依赖注入在servlet中使用会话Bean。
准备工作
使用依赖注入访问会话Bean主要由以下步骤构成:
1. 使用@EJB注解插入EJB。
2. 访问需要的类方法。
首先,我们需要一个会话Bean。简便起见,我们使用前一节创建的Salutation会话Bean,并在SalutationApplication中添加servlet。
实现
我们创建名为SalutationServlet的servlet,该servlet将使用Salutation会话Bean中的方法,并将返回结果展示出来。在SalutationApplication-war模块中创建一个包名为servlet,类名为SalutationServlet的servlet。该servlet包括一个类声明和三个方法:
doGet - 标准servlet方法
doPost - 标准servlet方法
processRequest - 被doGet和doPost调用
该servlet以@WebServlet开头,然后声明Servlet EJB实例,并在processRequest方法中使用。
package servlet; import javax.ejb.EJB; import packt.Salutation; @WebServlet(urlPatterns = {“/SalutationServlet”}) public class SalutationServlet extends HttpServlet { @EJB private Salutation salutation; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/html;charset=UTF-8”); PrintWriter out = response.getWriter(); try { out.println(“Servlet SalutationServlet”); out.println(“ ”);out.println(salutation.getFormalSalutation(“Sherlock Holmes”) ); out.println(“”); } finally { out.flush(); out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse, response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } |
在浏览器中输入下图所示的网址,将在页面上出现“Dear Sherlock Holmes”字样。
原理
为了能在servlet中引用EJB对象,我们使用了@EJB注解来注入一个Bean,然而,要使用该注解需要引入如下两个包:
import javax.ejb.EJB; import packt.Salutation; |
servlet要以@WebServlet注解开头。这是类级别的注解,用以标注该类是个HTTP servlet。其中,urlPatterns参数代表了servlet的映射地址,即指明了用户如何在服务器上定位该servlet。
@WebServlet(urlPatterns = {“/SalutationServlet”}) public class SalutationServlet extends HttpServlet { |
salutation变量被声明为该servlet类的成员变量,使用@EJB注解将EJB容器中的对象赋予该变量。
@EJB private Salutation salutation; |
HTTP Servlets响应doGet和doPost命令,至于调用哪个方法主要看客户端是采用HTTP GET方法还是HTTP POST方法。在本例中,两种方法都调用了processRequest方法。该方法使用标准servlet代码生成HTML响应返还给浏览器。我们比较关注的是,如何使用salutation对象,并调用getFormalSalutation方法返回结果给浏览器。
… out.println(salutation.getFormalSalutation(“Sherlock Holmes”) ); … |
更多
下一节将接受如何使用JNDI来访问EJB。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25432352/viewspace-705548/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25432352/viewspace-705548/