ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转载]开发访问 enterprise bean 的 portlet

[转载]开发访问 enterprise bean 的 portlet

原创 Linux操作系统 作者:dinner1007 时间:2019-03-05 11:57:06 0 删除 编辑

开发访问 enterprise bean 的 portlet


本文描述了如何通过 portlet 代码来调用遵循 Sun 的 Enterprise JavaBean 体系结构(以下简称 EJB)的 enterprise bean。本文包含了循序渐进的指令,用于开发访问无状态会话 EJB 的 portlet。同时还提供了 EJB 企业应用程序以供下载,以及用于将该程序部署到 WebSphere Application Server 的详细指令。

引言

对 于企业应用程序,Enterprise Archive (EAR) 文件可以既包含 Web 模块也包含 EJB 模块。如果访问 EJB 的 servlet 部署在单个 EAR 文件中,那么就可以很容易的开发它。然而,portlet 只能作为 WAR 文件来开发,您不能在单个文件中部署 portlet 和 EJB。因此,开发通过 portlet 代码访问 EJB 的 portlet 不同于开发访问 EJB 的 servlet。

本文针对需要通过 portlet 代码来访问 EJB 的 portlet 开发人员。要想充分的理解本文,您应该了解如何使用 WebSphere 环境在 Websphere Portal 中开发和部署 portlet。

要理解本文描述的场景,您需要 下载范例 ZIP 文件并将内容解压缩到硬盘上的一个目录。您还需要有权使用下列环境:

  1. IBM® WebSphere® Studio Application Developer V5.1.2(以下简称 Application Developer),用于开发企业应用程序。
  2. 将 IBM Portal Toolkit 5.0.2.2 作为插件安装到 Application Developer,用于开发 portlet。
  3. IBM WebSphere Application Server V5.0.2,用于安装该应用程序。



回页首


部署企业应用程序范例

附加的企业应用程序(在 下载中)遵照 EJB 1.1 规范。它包括一个 EAR 文件和一个包含 EJB 会话 bean 的 JAR 文件。该企业应用程序项目包含一个无状态会话 bean,它提供 sayHello方法。您在以后会看到 portlet 范例代码将调用该方法。您必须按照下面的描述在 portlet 中封装 EJB JAR 文件。

要部署范例 EJB:

  1. 在 Web 浏览器中打开 WebSphere 管理控制台。
  2. 展开 Applications然后单击 Install New Application。
  3. 对于 local path 字段,浏览到您解压缩下载文件的目录,选择 HelloWorldEAR.ear ,然后单击 Next。
  4. 在 You can choose to generate default bindings and mappings窗口,单击 Next。
  5. 单击 Step 5 Summary,然后单击 Finish。
  6. 单击 Save to Master Configuration,然后单击 Save。
  7. 单击 Application ->Enterprise Applications,并找到 HelloWorldEAR.ear 。
  8. 单击应用程序前面的复选框,并单击 Start以启动它。



回页首


开发 portlet 以访问范例 EJB

在本部分中,您将看到如何开发使用 JNDI 上下文访问会话 bean 的 portlet 应用程序。

生成 portlet 代码

  1. 打开 WebSphere Studio。
  2. 选择 File =>New =>Other 以启动 New 向导。

    创建新项目
  3. 在 Select 页面上,在左边的栏中选择 Portlet development,在右边的栏中选择 Portlet Project。
    图 2. 选择 portlet 项目类型
    选择 portlet 项目类型
  4. 单击 Next。
  5. 在 Project Name 字段中,输入 PortletAccessingEJB ,并选中 Configure advanced options。

    输入项目名称
  6. 单击 Next。
  7. 在 J2EE Settings Page 的 EAR project 字段中,输入 PortletAccessingEJBEAR 。
    图 4. J2EE Settings Page
    J2EE Settings Page
  8. 单击 Next直到您看见 Event Handling 页面。
  9. 取消选择 Add action Listener。
    图 5. Event Handling
    Event Handling
  10. 单击 Finish,然后在 Confirm Perspective Switch 窗口上单击 Yes 以查看 Portlet 透视图。 portlet.xml 文件在 Application Developer 的 Portlet 视图中打开。
    图 6. portlet.xml
    portlet.xml

将 EJB JAR 复制到 portlet 项目

您需要复制 EJB JAR 至 portlet 项目中,这样 portlet 代码能在会话 bean 中调用方法。

将 Helloworld.jar 拖放至 WEB-INF/lib 目录,以实现从 download 处复制 Helloworld.jar 。



Copying Helloworld.jar

请参见路径中的 JAR 文件, 如图 8所示。



Copied Helloworld.jar

修改 Portlet 代码

接着您将会了解如何修改 PortletAccessingEJBPortlet.java 文件来调用远程会话 bean 上的方法。您需要将 doView() 方法中的 Context.PROVIDER_URL 值移到服务器的 URL 上,EAR 便是在该服务器的上配置的。

  1. 在 Java Resources 文件夹中,打开 PortletAccessingEJBPortlet.java 。用清单 2 所示的代码替换清单 1 所示的 doView 方法。

    清单 1. 包含 JSP

    // Invoke the JSP to render        		
    getPortletConfig().getContext().
    include(VIEW_JSP+getJspExtension(request), request, response);





    清单 2.调用 MyHelloWorld bean 上方法的代码

        PrintWriter pw = response.getWriter();
    try{
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.ibm.websphere.naming.WsnInitialContextFactory");
    env.put(

    Context.PROVIDER_URL,
    "corbaloc:iiop:sukumar.dfw.ibm.com:2809"
    );

    InitialContext ctx= new InitialContext(env);
    Object objectHome
    =ctx.lookup("ejb/com/ibm/dr/MyHelloWorldHome");

    MyHelloWorldHome
    home=(MyHelloWorldHome)javax.rmi.PortableRemoteObject.
    narrow(objectHome, MyHelloWorldHome.class);

    MyHelloWorld myHelloWorld=home.create();

    String s=myHelloWorld.sayHello();
    pw.println(
    "The sayHello method of MyHelloWorld returns"
    + s + "
    ");
    } catch(Exception e){

    pw.println("the exception is " + e);

    }



  2. 用已配置的 EJB 中适当的 URL 来替换以上代码中的 Context.PROVIDER_URL 值。即将其转移到配置 EAR 的服务器的 URL 中,

    以下将在 Application Developer 显示。


    图 9. PortletAccessingEJBPortlet.java
    PortletAccessingEJBPortlet
  3. 会出现一些错误。要修复这些错误,右键单击,并选择 Source->Organize Imports。如图 10 所示。

    组织导入
  4. 在 Organize Imports 向导中,选择 javax.naming.context 类型。会出现没有错误的文件,如图 11。

    在组织导入之后
  5. 按 Ctrl+S 保存文件。

输出 WAR 文件

  1. 选择项目并单击 File ->Export.

    输出 WAR 文件
  2. 选择 WAR 文件。

    选择 WAR 文件
  3. 指向 WAR 文件。

    指定目录以输出 WAR 文件
  4. 单击 Finish完成 WAR 文件的输出。



回页首


测试 portlet

要测试 portlet:

  1. 在 WebSphere Portal 中安装 portlet。
  2. 用 portlet 定制门户页面。
  3. 显示页面,内容如图 15 所示。
    图 15. portlet 的输出
    portlet 的输出

在图 15 中,您将会看见 portlet 显示来自 EJB 会话 bean 的 sayHello 方法中的数据。




回页首


结束语

本 文按部就班地向您介绍了开发 portlet 以访问无状态会话 EJB 的步骤。从 portlet 代码调用实体 bean 是类似的。由于您不能将 portlet 和 EJB 封装在一起,因此您需要用不同的方式编写代码以访问已部署的 EJB,这和用 servlet 访问企业应用程序是不同的。

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

请登录后发表评论 登录
全部评论

注册时间:2018-08-23

  • 博文量
    1714
  • 访问量
    1477855