ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ejb3.1 cookbook学习系列2

ejb3.1 cookbook学习系列2

原创 Linux操作系统 作者:MagicProgram 时间:2011-08-22 15:07:16 0 删除 编辑

使用依赖注入访问会话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。

2011-8-18 19-07-56.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25432352/viewspace-705548/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: gsoap使用
请登录后发表评论 登录
全部评论

注册时间:2011-02-24

  • 博文量
    29
  • 访问量
    132824