IBM 开发人员解决方案:开发使用了 JavaBeans 和 JSP 组件的 portlet

js|解决

IBM 开发人员解决方案:开发使用了 JavaBeans 和 JSP 组件的 portlet

使用 Portal Toolkit Plugin for WebSphere Studio Application Developer V4.0.3 轻松实现它。

Balu Ramachandran (balur@us.ibm.com)
高级软件工程师,IBM
2003 年 2 月

本文叙述了 WebSphere Studio Application Developer V4.0.3 能成为开发 portlet 的首选 J2EE 开发工具的缘由。文章简要地讨论了门户网站、WebSphere Portal Server V4.1.2、portlet 和 Portal ToolKit Plugin V4.x。作者将为您详细讲解如何使用 Portal Toolkit Plugin 一步一步地编写 portlet。文中的示例门户网站应用程序就是一个 portlet,这个 portlet 能调用一个 JavaBeans 组件把存储在 Java 属性文件中的特定于的客户信息聚集在一起。这个 portlet 将使用 JavaBeans 信息并通过 JavaServer Pages(JSP)页面将结果返回给请求者。当需要向用户显示时,这个 JSP 页面将被嵌入到 portlet 中。
引言
门户网站是一个通过把基于 Web 的资源聚集一处使用户可以单点访问那些资源的 Web 站点。用户不再需要单独登录每个他们想要使用的应用程序而只需要登录门户网站本身就可以了。

WebSphere Portal Server V4.1
IBM WebSphere Portal 是 WebSphere 软件平台的一个组成部分, 它主要完成下述三种功能:

通过一系列用户、设备和定制选项提供对信息的访问。
集成并自动执行业务过程。
构建、连接并管理应用程序。
WebSphere Portal Server 是一个高度可伸缩门户网站服务器,它实现了一个战略上的开放源代码门户网站框架。Portal Server V4.1 建立在 WebSphere Portal Family V2.1 的核心服务之上。Portal Server 提供以下服务:

对各类门户网站和商业服务进行访问,比如:访问用于电子交易(eCommerce)的 WebSphere Commerce Suite、访问用于信息分类(information categorization)的 EIP 和访问用于高级协作(advanced collaboration)与个人信息管理(personal information management (PIM))的 Lotus 工具(例如:Calendar、Mail 和 Sametime)。
通过工作流、EAI 等方法对旧系统的连接。
WebSphere Portal 也提供下列其它服务:

单点登录
安全性
Web 内容发布
搜索
个性化处理
协作服务
企业应用程序集成
支持移动设备
站点分析
Portlet
Portlet 是 IBM WebSphere Portal 的重要组成部分。作为一种特殊的可重用的 Java servlet,portlet 被作为已定义区域显示在门户网站页面上。portlet 可以访问许多不同的应用程序、服务和 Web 内容。WebSphere Portal 配有一个丰富的标准 portlet 集,它包括了用于显示辛迪加内容、用于转换 XML 和用于访问搜索引擎与 Web 页面的 portlet。您也可以使用一些第三方提供的 portlet ,例如企业资源计划(ERP)和客户关系管理(CRM)。 Portal Server 还提供您一个能用于创建自定义 portlet 的 API。通过把 portlet 聚集在一起并授予用户定义他们自己的桌面的权力,Portal Server 为商业伙伴、客户或者雇员提供了一条能更高效更满意地从事商务活动的捷径。

WebSphere Studio Application Developer V4.0.3
不久之后,WebSphere Studio 产品套件会取代现有的 Java 和 Web 应用程序开发工具(VisualAge for Java 和 WebSphere Studio-classic)。新的工具建立在一个开放的平台之上并且拥有最前沿的 Enterprise JavaBeans(EJB)技术和基于 J2EE 1.2 规范的 J2EE 加工技术。它还具有下列功能:

企业连接
内置单元测试环境(WebSphere Application Server 和 Tomcat)
增量编译
多种调试方法(包括远程调试)
集成小组开发环境
WebSphere Studio Development Environment 是建立在高度可插的 WebSphere Studio Workbench 开放源代码平台之上。在这个平台的顶层,IBM 实现了 WebSphere Studio Application Developer, 并且 IBM 还鼓励其他供应商将他们的工具也集成到这个平台上。这个开发环境适合基于角色的开发,并且开发过程带有适合于特定角色的用户界面功能。所有资源都存储在一个基于文件的资源库中。在不久的将来,VisualAge for Java 和 WebSphere Studio-classic 所有的功能将都能在 Application Developer 中实现。新的工具已经能支持 Web 服务。

Portal Toolkit Plugin
Portal Toolkit 是 Application Developer V4.0.3 的一个插件,用于开发 portlet 应用程序。Portal Toolkit 提供:

Portlet 项目,您能在这个项目中创建抽象 portlet、 JSP portlet、servlet invoker portlet、 XML/XSL portlet 和多 - 设备/视图(multi-device/view)portlet。
Portal Server 项目,您能在这个项目中将你的 portlet 应用程序发布到你的目标 Portal Server 机器上。你的 portlet 将出现在你的 Portal Server 的调试页面上。
用于企业应用程序的 Portlet 应用程序示例。
开发并部署一个 JSP 会话 portlet
作为一个示例,我将为您讲解如何开发一个使用了名为 PortalBean 的 JavaBeans 组件的 portlet,使它能从属性文件中检索已存储的值。这个 portlet 实例化一个已存储的 JavaBeans 类并把这个 JavaBeans 实例存储在 portlet 会话的请求属性中。这之后,portlet 就调用一个 JSP 组件并传出请求属性与响应属性的值。然后该 JSP 组件将会使用被传来的 JavaBeans 类并在 portlet 中输出适当的值。

为 Application Developer 安装 Portal Toolkit Plugin

如果您还没有 Portal Toolkit Plugin,请在这里下载 Portal Toolkit Plugin。
根据提示将插件安装到 Application Developer V4.0.3 中。请注意安装的先决条件。
将 WebSphere Application Server JVM 添加到 Aplication Developer 的可用 JVM 列表中:
打开 Windows - Preferences。选择 Java - Installed JRE。
单击 Add New。
浏览并选择 X:\WebSphere\AppServer\java。
一旦它被显示在已安装 JRE 列表中, 选中 WAS JRE 旁的复选框将它设置为缺省的 JRE。
单击 OK 保存您所做的更改。

开发 MyJSPPortal Portlet

创建一个名为 JSPPortal 的新项目:
单击 Open new project wizard>Portlet Development>Portlet Application Project。
在 Project name 栏中输入 MyJSPPortal。
接受企业应用程序项目名称(Enterprse Application Project name)的缺省值
单击 Next.
安装一个基本的 portlet 基础架构,选择 Portlet Type None。单击 Finish。
创建一个名为 MyJSPPortal 的 Java 类:
单击 Open new project wizard>Java>Java class。
将包命名为 portal。
将类命名为 MyJSPPortal。
单击 Finish。
为 MyJSPPortal 类复制并粘贴代码:
请确认用于编辑 MyJSPPortal 的编辑器是打开的。
复制并粘贴下面的代码:
MyJSPPortal
package portal;
import java.io.*;
import java.util.*;
import org.apache.jetspeed.portlet.*;
  public class MyJSPPortal extends AbstractPortlet {
  public MyJSPPortal() {
  super();
}
public void doView(PortletRequest request, PortletResponse
response) throws IOException,PortletException
{

// read the values from properties text file
getPropertiesFile(request);
    
PrintWriter writer = response.getWriter();
FileInputStream propFile = null;
  
  // Use created session to retrieve values
PortletSession session = request.getPortletSession(false);

  // when valid session is returned, get the values from
   the session
   String lName = "";
String fName = "";
String eMail = "";
if (session!=null)
{
lName = (String)session.getAttribute("LName");
fName = (String)session.getAttribute("FName");
eMail = (String)session.getAttribute("Email");
}
  PortalBean bean = new PortalBean();
  bean.setlName(lName);
  bean.setfName(fName);
  bean.setEMail(eMail);
  request.setAttribute("MyBean",bean);
  getConfig().getContext().include("MyPortal.jsp",request,
  response);    
       }
    public void init(PortletConfig portletConfig)
    throws UnavailableException
  {
    super.init(portletConfig);
  }
     public void getPropertiesFile(PortletRequest
     request) throws PortletException
  {
    // Intialize method variables
    String fname = "";
    String lname = "";
    String email = "";
  FileInputStream fi = null;

    // Create a new Session
    PortletSession session =
    request.getPortletSession();

    // Initialize a properties file with no default
    properties
     Properties myProp = new Properties();
    
   // Load the properties class with key-value
   pairs from // the text file
   try{
     fi = new FileInputStream
     ("C:\\temp\\myProperties.txt");
     myProp.load(fi);
      fi.close();
   }catch (FileNotFoundException fe)
   {
     System.out.println("File Not Found");
   }
   catch (IOException fe)
   {
     System.out.println("IO Exception");
   }
    
   // Retreive the individual key - value pairs and
   store them in the session
  if (myProp.containsKey("FirstName"))
   {
     fname = myProp.getProperty("FirstName");
     session.setAttribute("FName", fname);
   }
  if (myProp.containsKey("LastName"))
  {
     lname = myProp.getProperty("LastName");
      session.setAttribute("LName", lname);
   }
  if (myProp.containsKey("Email"))
  {
     email = myProp.getProperty("Email");
     session.setAttribute("Email", email);
  }
  }
  public void service(PortletRequest portletRequest,
  PortletResponse portletResponse) throws PortletException,
  IOException
  {
    doView(portletRequest,portletResponse);
  }
}    

编译上述代码(CTRL-S)。
创建如下所示的一个名为 MyProperties.txt 的文本文件,并将它保存在 C:\temp 目录中。
MyProperties.txt
        FirstName=Joe  
        LastName=Generic
        Email=com

创建另一个名为 PortalBean 的 Java 类:
就象您先前所做的那样,创建另一个名为 PortalBean 的新 Java 类,并将它打开。
将下面的代码剪切并粘贴到 PortalBean 中:
PortalBean
    package portal;

    /**
     * Insert the type's description here.
     * Creation date: (1/12/2002 6:34:35 PM)
     * @author: Administrator
     */
    public class PortalBean {
    /**
     * PortalBean constructor comment.
     */

     public String fName;
     public String lName;
     public String eMail;

    public PortalBean() {
      super();
    }
        
    /**
     * Insert the method's description here.
     * Creation date: (1/14/2002 10:28:20 PM)
     * @return java.lang.String
     */
    public String eMail() {
      return null;
    }
        
    /**
     * Insert the method's description here.
     * Creation date: (1/14/2002 10:28:20 PM)
     * @return java.lang.String
     */    
    public String getEMail() {
      return eMail;
    }
        
    public String getfName()
    {
      return fName;
    }

    /**
     * Insert the method's description here.
     * Creation date: (1/14/2002 10:35:04 PM)
     * @return java.lang.String
     */
    public String getlName() {
      return lName;
    }
        
    /**
     * Insert the method's description here.
     * Creation date: (1/14/2002 10:29:41 PM)
     * @param email java.lang.String
     */
    public void setEMail(String email) {
      eMail = email;
    }
        
    public void setfName(String myName)
    {
      fName = myName;
    }
        
    public void setlName(String myName)
    {
      lName = myName;
    }
  }

在控制台屏幕的下半部分会出现两条错误信息 — 其中一条信息表明您需要将一个 servlet 引用添加到 portlet.xml 文件中而另一个信息则表明存在对 portlet.xml 文件中 portlet 的一个错误引用。 按下列步骤进行操作您将能修正这些错误。

将 portlet 添加到 Web 部署描述符中:
双击 web.xml,打开 web.xml 进行编辑。
单击 servlet 选项卡并选择 Add。
在 Add Servlet 中,找到 MyJSPPortal servlet 并单击 OK。
单击 Servlet 窗口并单击 Add 进行 URL 映射。
编辑新的 URL 并将它的值设置为: /MyJSPPortal/*。
单击 CTRL-S 保存您所做的更改。
单击 web.xml 的 source 选项卡查看添加了 servlet 后相应的更改。
添加 MyJSPPortal.jsp 文件:
右单击 webApplication 并添加 New>JSP File。
输入文件名 MyPortal.jsp。
单击 Finish。
双击新近创建的 MyPortal.jsp,将下面的代码复制到文件中,然后单击 CTRL-S 保存这些代码。
MyPortal.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
< %@ page session="false" %;>

<jsp:useBean id="MyBean" class="portal.PortalBean" scope="request"/>
<META http-equiv="Content-Type" content="text/html">
<META http-equiv="Content-Style-Type" content="text/css">
<TABLE class="Portlet" width="100%" border="0"cellspacing="0"
cellpadding="0">
<TR>
<TD>
<b>Last Name: <%=MyBean.getlName()%></b>
</TD>
<TD>
<b>First Name: <%=MyBean.getfName()%></b>
</TD>
<TD>
<b>EMail: <%=MyBean.getEMail()%></b>
</TD>
</TR>
</TABLE>

将参考 servlet 添加到 portlet.xml 文件中:
双击 portlet.xml, 打开 portlet.xml 进行编辑。
单击 portlet 选项卡。
双击 Portlet Applications 并右单击 Portlet_2。
单击 servlet 旁的 Browse 并找到 MyJSPPortal servlet。它的状态应该是未被使用。
突出显示 servlet 并单击 OK。
使用 CTRL-S 保存并提交您刚才所做的更改。
当您完成上述步骤后,您就不会在控制台屏幕上看到错误信息了。

重新编译 MyJSPPortal 项目:
右单击 MyJSPPortal 并选择 Rebuild Project。
导出完整的 WAR 文件:
右单击 MyJSPPortal 并选择 Export WAR。
对于导出文件的存放位置,浏览并选择 C:\temp(或其他任何合适的位置)作为导出文件位置,并输入 MyJSPPortal 作为文件名。
单击 Finish。
编译代码(CTRL-S)。

部署 MyJSPPortal Portlet
要部署 MyJSPPortal portlet,请按下列步骤进行操作:

以门户网站管理员身份登录门户网站:
打开 Internet Explorer 并输入以下地址:http://portal.ibm.com/wps/portal(或合适的 URL)。
单击右上角的 key 图标登录。
使用 wpsadmin/wpsadmin 作为用户标识/密码,从而以管理员身份登录。
访问 Administration Portlet:
单击左上角的下拉菜单,它包含一个表示当前所显示 Home 页的条目,并选择 Portal Administration。
单击 Browse 找到您在前面一节中导出的 MyJSPPortal.war 文件(C:\temp\MyJSPPortal.war),然后单击 Next。
单击 Install 安装 portlet。您应该看见一条表明 portlet 已被成功安装的消息。
将 MyJSPPortal portlet 添加到 Home - Welcome 页面:
单击屏幕左上角带有 Portal Administration 条目的下拉菜单。
选择 Work with Pages。
单击 Page Group 下拉菜单并选择 Home。
单击 Page 下拉菜单并选择 Welcome。
单击屏幕上方的 Get Portlets
选择 Show all portlets 并单击 Go。
现在您将能看见一个已部署好的 portlet 的列表。向下滚动并找到 MyJSPPortal portlet。单击该行最左一栏的 + 符号选择 MyJSPPortal portlet 进行部署。
向上滚动页面并单击页首左上端的 OK。
一旦你返回到原先的页面,找到并突出显示 MyPortal portlet。单击 + 符号将 MyPortalportlet 添加到 Welcome 页面。
最后,单击屏幕左下端的 Activate 图标激活添加了 MyPortal portlet 的 Welcome 门户网站页面.
查看 Home 页面,看看您所作的更改:
找到并单击左上角的下拉菜单并选择查看 Home 页面。

时间: 2024-12-21 20:07:44

IBM 开发人员解决方案:开发使用了 JavaBeans 和 JSP 组件的 portlet的相关文章

对于开发人员的开发机配置选型应该如何抉择?

对于现在的分布式开发, 一套机子要跑多个服务,开多个虚拟机,数据库,redis集群,solr集群,内存占用率动不动上10g,以最低适用的机子配置给开发员,应该可行了吧... CUP肯定得i7 内存8g,个人认为偏少,建议12g,最好16g..   接口方面主要是能够额外连接显示器,实现双屏开发, 增加开发效率,有HDMI,就行     如果机子配置能够达到如下,那肯定没问题了,C盘再搞个120g固态硬盘,爽歪歪   这是自用thinkpad两年前的配置,使用良好,水货...    

找asp.net开发人员一起做一个事业,有想法的进来看看

问题描述 想做一个网页游戏,纯网页的游戏,大概属于养成类的,并且开放接口,让所有爱好者一起做其它功能,像开源项目一样.如果你有时间,有能力,也不想永远做.net开发人员,可以考虑和我聊一下:laoyangui(at)gmail.com_______________________________ASP.NET=>非技术区版主:请不要在技术区发非技术帖这次我帮你转移了,下次将直接删除三次以上,除直接删除外,将封杀ID具体版规请参考置顶的版务帖~ 解决方案 本帖最后由 viena 于 2008-04

怎么去面试一个asp.net开发人员?

问题描述 我呢是09年毕业的,一直都在做.net相关的开发.目前,大小混到了一个主管的位置,因为人事变动,公司需要招人.对于这方面呢,多少欠缺一些经验.目前我发现了一些问题,1.问理论相关的,大多是从书上或者网络上了解的,背出来了比如:我问,值类型和引用类型的区别,照本宣科似的背出来了(值类型被分配在栈,引用类型被分配在堆中,有程序猿分配--):getpost的区别,几乎答案全是,GET的URL会有长度上的限制,则POST的数据则可以非常大,POST比GET安全,因为数据在地址栏上不可见.能说出

以开发人员方式交付设计

本文讲的是以开发人员方式交付设计, 长标题:像在开发环境中搭建 UI 一样在 Sketch 中设计 首先,这将是本文中唯一一次提到 Photoshop.现在是 2017 年了,为自己好,去下载 Sketch(或者 Figma - 只要不是 Photoshop 就行) 用吧. UI 设计已经有了长足的发展,图像处理程序也是如此(如果你现在还这么称呼它们的话).仍记得在 GIMP 中创建我们的第一套 UI 时的场景,现在,有了 MacBook,我们可以用 Sketch 完成几乎所有与 UI 相关的所

如何为自己的外包项目选择最合适的开发人员?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在软件项目外包过程中,如何在一大批参与项目投标的开发人员中进行甄别与筛选,找到最适合的开发人员,是发包方必须解决的一大难题.如果草率地选择开发人员,往往会造成项目的开发周期延长.质量无法达到要求.成本增加甚至项目彻底失败的严重后果. 作为一个有多年经验的软件外包产业参与者,我也曾经为如何选择合适的开发人员而迷茫,也曾有过项目外包失败的教训.现

《iOS 9应用开发入门经典(第7版)》——第1章,第1.2节成为iOS开发人员

1.2 成为iOS开发人员 要成为iOS开发人员,并非只需坐下来编写程序即可.您需要一台较新的 Intel Macintosh台式机或笔记本电脑,它运行Mavericks或Yosemite,硬盘至少有8GB的可用空间.开发系统的屏幕空间越大,就越容易营造高效的工作空间.您甚至可将Xcode切换到全屏模式,将分散注意力的元素都隐藏起来.虽然如此,我在13英寸MacBook Air中开发时也相当舒服,因此并非一定要使用多显示器系统. 假设您有运行Yosemite或El Capitan的Mac,还需要

探索PaaS开发人员可以使用的IaaS交付服务

在本文中,将会了解 PaaS 可使用哪种交付服务,应该考虑使用哪个层级的多防御机制来更好地保护 IaaS, 防止云滥用. 在一个云岛上,PaaS 开发人员通常在博客上和 IaaS 网络专家讨论开发人员使用 IaaS 虚拟机的不同方法.有一天,开发人员无法运行和测试一个应用程序.他抱怨说,当他发现的时候已经太晚了,虚拟机的容量已不足以处理突然增加的大数据量,这些数据是满足日益增长的合规性需求所必需的. 该 PaaS 开发人员并不能控制虚拟机,所以他立刻通知 IaaS 专家,要求他增加虚拟机的容量.

IBM推出Watson应用程序开发人员认证

IBM表示该公司将面向开发人员推出Watson认证. IBM此举是因为该公司正在越来越多地为Watson和认知计算追求开发人员和更广阔的生态系统. 参加IBM Watson Application Developer Certification,IBM会通过测试考核以下内容: 1. 认知计算基础知识; 2.认知计算用例; 3.IBM的Watson Developer Cloud基础知识; 4. 以及通过IBM的Watson Developer Cloud开发认知应用程序. 根据一篇博客文章透露,

IBM收购“深度学习”初创企业Alchemy API并雇用四万名开发人员

抱歉了各位前任员工,我们需要的是能构建起"沃森即云"的出色人才. 蓝色巨人终于从紧锣密鼓的成本削减计划当中脱身出来,找到闲暇完成一笔收购活动并启用四万名新晋开发人员--这一次的交易对象为初创企业Alchemy API公司. 深度学习技术初创企业Alchemy API的专长在于对非结构化文本及数据进行收集.筛选以及分析.根据蓝色巨人的说法,此次收购将强化IBM的"沃森生态系统". 沃森业务营收将作为IBM收入结构转型的重要组成部分,蓝色巨人希望借此抵消其传统硬件与软件