» 搜索提示 
 
将 Portlet 部署到 Sun Java Portal Server
2006 年 4 月 [修订号:V2.1-1]  
本教程介绍了将使用 Sun Java Studio Creator 集成开发环境 (Integrated Development Environment, IDE) 开发的符合 JSR-168 的 JavaServer Faces Portlet 应用程序部署到独立的 Sun Java System Portal Server 的过程。您将使用 IDE 为 Portlet 创建 Web 应用程序归档 (Web Application Archive, WAR) 文件,在门户服务器中配置设置,然后在 Sun Java System Portal Server 上部署该 WAR 文件。
要完成本教程,您必须具有访问独立的 Sun Java System Portal Server 的权限,并且还应熟悉门户服务器技术。如果您不熟悉 Sun Java System Portal Server,请在学习本教程之前下载并安装它,然后阅读其文档。请确保下载并安装 Sun Java System Portal Server 的最新可用版本。需要版本最低为 6。联机帮助可以从门户服务器菜单进行访问。本教程基于 Solaris 操作系统上的 Sun Portal Server 版本 6 和 7。

在将 Portlet 部署到独立的 Sun Java System Portal Server 之前,您必须首先确保该 Portlet 已成功部署到与 IDE 捆绑在一起的 Apache Pluto Portlet 容器。如果您的应用程序使用 JDBC 数据源,则必须先将对应的数据库驱动程序集成到门户服务器中,然后再部署 Portlet。
 
目录
 
关于 Portlet 部署
导出 Portlet WAR 文件
在 sun-web.xml 文件中配置 EJB 组件
将 sun-web.xml 文件添加到导出的 WAR 文件
配置样例数据源
在 Sun Portal Server 6 上部署 Portlet
在 Sun Portal Server 7 上部署 Portlet
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 

关于 Portlet 部署

 
部署 Portlet 应用程序与部署常规 Web 应用程序类似。在学习本教程之前,您需要熟悉部署过程和 Portlet 开发。有关如何使用 IDE 创建 Portlet,请参见教程开发 Portlet 应用程序
 
在开发 Portlet 应用程序时,通过从 IDE 生成并运行该应用程序,可以对其进行测试。IDE 会自动地将 Portlet 应用程序部署到其内置 Portlet 容器(即 Apache Pluto Portal Server)。在完成 Portlet 的开发和测试后,可以将它部署到生产门户服务器。
 
部署过程中的第一步是为 Portlet 创建 Web 应用程序归档 (Web Application Archive, WAR) 文件,以便可以将其部署到独立的 Sun Java System Portal Server。WAR 文件以压缩格式包含了完整的 Portlet。
 
如果 Portlet 应用程序使用 Enterprise JavaBeans (EJB) 组件或数据源,请确保为目标 Sun Application Server 正确配置了这些组件或数据源(方法是编辑特定于容器的部署描述符文件 sun-web.xml)。sun-web.xml 文件是在您运行项目时自动创建的。接下来将修改的 sun-web.xml 文件添加到 Portlet 的已导出 WAR 文件,并将该 WAR 文件复制到安装了目标 Sun Java Portal Server 的系统上。如果 Portlet 应用程序使用数据库表,则必须先在目标 Sun Application Server 上配置 Portlet 的 JDBC 资源,然后再部署 Portlet。
 
如果 Portlet 应用程序不引用 EJB 组件或数据源,则无需进行任何更改。在导出 Portlet WAR 文件之后,就可以部署 Portlet 了。要部署到 Sun Portal Server 6,请参见在 Sun Portal Server 6 上部署 Portlet。要部署到 Sun Portal Server 7,请参见在 Sun Portal Server 7 上部署 Portlet
 

导出 Portlet WAR 文件

 
  1. 在“项目”窗口中,右键单击 Portlet 应用程序项目节点,然后从弹出式菜单中选择“导出 WAR 文件”。将打开“导出 WAR”对话框,如下图所示。

    图 1:“导出 WAR”对话框
    图 1:“导出 WAR”对话框
     
  2. 选择与目标 Web 容器的平台(正在运行生产门户服务器)匹配的 J2EE 平台。如果您不能确定,请向门户管理员查询以获知正确的平台。

  3. 为导出的 WAR 文件选择一个文件名,然后单击“确定”。

    IDE 将生成 Portlet WAR 文件,并在生成过程完成时显示生成成功消息。如果该过程失败,IDE 将显示相应的错误消息。
 

在 sun-web.xml 文件中配置 EJB 组件

 
 
接下来的部分将介绍如何在 sun-web.xml 文件内配置 EJB 组件引用,以及如何将 sun-web.xml 文件重新打包在刚导出的 WAR 文件内。这样做可确保为目标生产门户服务器正确配置 Portlet 应用程序所引用的数据库或 EJB 组件:在 sun-web.xml 文件中引用的 JNDI 名称必须与在目标服务器上配置的资源匹配。如果 Portlet 应用程序不引用 EJB 组件或数据库,则无需进行任何修改即可部署 Portlet。要部署到 Sun Portal Server 6,请参见在 Sun Portal Server 6 上部署 Portlet。要部署到 Sun Portal Server 7,请参见在 Sun Portal Server 7 上部署 Portlet
  1. 在 IDE 中,运行 Portlet 项目。

    运行 Portlet 项目会自动生成一个 sun-web.xml 文件,该文件包含所有必需的 XML Portlet 部署描述符标记。

  2. 在“文件”窗口中,展开 "your-portlet-project" > "web" > "WEB-INF",其中 your-portlet-project 是您的 Portlet 应用程序的名称。

  3. 右键单击 sun-web.xml 文件,然后从弹出式菜单中选择“编辑”。

    将在 IDE 中打开 sun-web.xml 文件。

  4. 复制 sun-web.xml 文件的全部内容。在 IDE 之外的其他目录中创建 sun-web.xml 文件,并将复制的内容粘贴到新的 sun-web.xml 文件中。

    例如,对于名为 AllServices 的 Portlet 应用程序,其 sun-web.xml 文件与如下所示类似。
     
    代码样例 1:样例 sun-web.xml 文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.
     //DTD Application Server 8.1 Servlet 2.4//EN"
    "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd ">
    <sun-web-app error-url="">
     <!--# ++ properties ++
    #Fri Jan 27 10:04:06 MST 2006
    project.is_portlet=true
    project.portlet_name=AllServices
    project.web_context=/AllServices
    -->
      <context-root>/AllServices</context-root>
      <ejb-ref>
        <ejb-ref-name>GreeterEJB</ejb-ref-name>
        <jndi-name>corbaname:iiop:localhost:23700#GreeterEJB</jndi-name>
      </ejb-ref>
      <resource-ref>
        <res-ref-name>jdbc/Travel</res-ref-name>
        <jndi-name>jdbc/Travel</jndi-name>
      </resource-ref>
      <class-loader delegate="false"/>
      <jsp-config>
        <property name="classdebuginfo" value="true">
          <description>Enable debug info compilation in the generated servlet class</description>
        </property>
        <property name="mappedfile" value="true">
          <description>Maintain a one-to-one correspondence between static content
          and the generated servlet class' java code</description>
        </property>
      </jsp-config>
    </sun-web-app>
    
     
    请注意,EJB 组件引用 <jndi-name>corbaname:iiop:localhost:23700#GreeterEJB</jndi-name> 引用的是 localhost。要正确配置 EJB 组件引用,请将 localhost 替换为您的 Sun Java Portal Server 主机的名称。
 

将 sun-web.xml 文件添加到导出的 WAR 文件

 
本部分介绍了如何将修改的 sun-web.xml 文件添加到导出的 Portlet WAR 文件中。
  1. 创建一个与 WAR 文件同名的目录,然后将 WAR 文件复制到该目录中。

  2. 按如下所示提取 WAR 文件的内容:
    jar xvf warfilename
    其中 warfilename 是 Portlet 项目的已导出 WAR 文件的名称。例如,如果在 Solaris 操作系统上将名为 JDBCPortlet.WAR 的 WAR 文件导出到项目的 dist 目录,则可以使用与如下所示类似的命令:

    代码样例 2:提取导出的 WAR 文件
    cd Creator/Projects/JDBCPortlet/dist
    mkdir JDBCPortlet
    cd JDBCPortlet
    jar xvf ../JDBCPortlet.war
    
     
  3. 将在上一部分中创建的 sun-web.xml 文件复制到 Portlet 项目的 WEB-INF 目录。例如:
    cp ../../web/WEB-INF/sun-web.xml ./WEB-INF
    
  4. 在 Portlet 应用程序的项目目录中,删除原已导出的 WAR 文件。

  5. 重新创建 WAR 文件。例如:
    jar cvf ../JDBCPortlet.war *
    
    在重新创建 WAR 文件的过程中,会将修改的 sun-web.xml 文件添加到导出的 WAR 文件中。

  6. 将修改的 WAR 文件复制到安装了 Sun Java Portal Server 的目标系统上。

    导出的 WAR 文件的缺省位置为 Portlet 项目目录的 dist 目录。例如,Creator/Projects/portletname/dist/portletname.war
 

配置样例数据源

 
如果 Portlet 应用程序引用数据库,则必须在应用服务器或门户服务器的主机上创建 JDBC 资源。本部分介绍了如何在 Java Studio Creator 2 Update 1 中创建指向 Travel 样例数据源的 JDBC 资源。以下说明使用的是 Sun Application Server 管理控制台。您可以使用类似的步骤来配置 Sun Application Server 上的任何数据源。
 
如果 Portlet 应用程序不引用数据库,则可以立即部署 Portlet。要部署到 Sun Portal Server 6,请参见在 Sun Portal Server 6 上部署 Portlet。要部署到 Sun Portal Server 7,请参见在 Sun Portal Server 7 上部署 Portlet
  1. 使用管理员登录名和口令登录到您的门户服务器主机上的 Sun Application Server 管理控制台。

    例如,转至 https://hostname:portnumber,其中 hostname 是您的 Sun Application Server 主机的名称,portnumber 是管理控制台所在的端口号。

  2. 在管理控制台的“日常任务”窗口中,展开“资源”> "JDBC",然后选择“连接池”。

    将打开“连接池”窗口,并显示当前的连接池,与下图类似。

    图 3:连接池
    图 3:连接池
     
  3. 单击“新建”。

    将在 Web 浏览器中打开“创建连接池”向导。

  4. 在“常规设置”部分中输入以下值:

  5. 属性    
    名称
    TravelDBPool
    资源类型
    从下拉菜单中选择 javax.sql.DataSource
    数据库供应商
    将此文本字段保留为空。


  6. 单击“下一步”。

    将刷新页面,并显示刚输入的信息以及缺省的数据源类名称。

  7. 在“数据源类名称”字段中输入一个名称(例如 com.sun.sql.datasource.DriverAdapter),然后单击“下一步”。

    将显示“创建连接池”向导的其他部分,包括“池设置”、“连接验证”、“事务隔离”和“属性”部分。接受其中大多数部分的缺省值。

  8. 在“属性”部分中输入以下值:

    属性    
    Url
    jdbc:derby//hostname:21527/sample
    Username
    travel
    Password
    travel
    DriverClassName
    org.apache.derby.jdbc.ClientDriver
    User
    travel


  9. 单击“完成”。

    “连接池”窗口将在管理控制台中打开。“当前池”列表包括 TravelDBPool。

  10. 创建一个指向 TravelDB 连接池的 JDBC 资源。在“日常任务”窗口中,展开“资源”> "JDBC" 节点,然后单击“JDBC 资源”。

    将在 Web 浏览器中打开“JDBC 资源”窗口,并显示当前资源的列表,与下图类似。

    图 4:“JDBC 资源”窗口
    图 4:“JDBC 资源”窗口
     
  11. 单击“新建”。将打开“创建 JDBC 资源”向导,如下图所示。

    图 5:“创建 JDBC 资源”向导
    图 5:“创建 JDBC 资源”向导
     
  12. 输入以下值:

    资源    
    JNDI 名称
    jdbc/Travel
    池名称
    从下拉菜单中选择 TravelDBPool
    状态
    已启用
    目标
    单击“添加”按钮以将 server 从“可用”窗格移动到“选定”窗格。


  13. 单击“确定”。

    将在 Web 浏览器中打开“JDCB 资源”窗口。jdbc/Travel 资源出现在“当前资源”列表中。

  14. driveradapter.jar 库从 Sun Java Studio Creator 安装目录复制到 Sun Application Server lib 目录中。例如,在 Solaris 操作系统上,将 ${CREATOR_HOME}/SunAppServer8/lib/driveradaptor.jar 复制到 Sun Application Server 主机上的 /opt/SUNWappserver/appserver/lib 中。

  15. ${CREATOR_HOME}/SunAppServer8/lib/derbyclient.jarderbynet.jar 复制到 Sun Application Server 主机上的 /opt/SUNWappserver/appserver/lib 中。

  16. 重新启动应用服务器。
 
有关在 Sun Application Server 中配置 JDBC 资源的详细信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南》中的第 3 章
 

在 Sun Portal Server 6 上部署 Portlet

 
本部分介绍了如何在 Sun Portal Server 6 上执行部署步骤。除非另有说明,否则该部署步骤是在运行 Sun Java Portal Server 6 的目标系统上执行的。接下来您将执行以下操作:将 Portlet 部署到门户容器,为 Portlet 注册一个频道,然后将该频道添加到容器。
 
注意:有一个问题会导致 Creator Portlet 应用程序无法在 Sun Portal Server 6 上部署。有关详细信息,请参见 Sun Java Studio Creator 错误列表
 
将 Portlet 部署到门户容器
 
  1. 在运行 Sun Portal Server 6 的目标系统上,运行命令行函数 pdeploypdeploy 命令会将 Portlet 部署到 Sun Java Portal Server 6 Portlet 容器。

    注意:用户需要具有超级用户权限才能运行 pdeploy 命令。

    pdeploy 的语法如下:
    pdeploy deploy -u ui -w password {-g|-d dn} -p webcontainerpasswor warfile
    
    其中 warfile 是在前面导出的 WAR 文件的名称。pdeploy 的选项有:

    -u   指定用来绑定到 Sun Java System Directory Server 的唯一用户名。
    -w 指定用来绑定到 Sun Java System Directory Server 的唯一用户名的口令。
    -g 指定 LDAP 中用于访问显示配置文件文档的全局级节点。-d 或 -g 选项是必选项。
    -d 指定 LDAP 节点中用于访问显示配置文件文档的唯一名称。-d 或 -g 选项是必选项。
    -p 指定 Web 容器口令。
     
    注意:有关 pdeploy 的完整描述,请参见《Sun Java System Portal Server 6 2005Q1 技术参考指南》中的第 11 章
     
    以下示例说明了名为 Portlet1.war 的已导出 WAR 文件的 pdeploy 命令。
     
    代码样例 3:pdeploy 命令
    /opt/SUNWps/bin/pdeploy deploy \
    	-u "uid=amAdmin,ou=People,dc=sesta,dc=com" \
    	-w admin \
    	-p sunjava \
    	-d "dc=sesta,dc=com" \
    	/tmp/Portlet1.war
    
     
  2. 在成功执行后,pdeploy 将显示以下消息:
    显示配置文件更新完毕!正在将 War 文件部署到 Web 容器...
    成功。
    
  3. 要再一次部署同一 Portlet 应用程序,必须首先取消部署 Portlet,如下所示:
    pdeploy undeploy -u uid -w password {-g|-d dn} -p webcontainerpassword portlet-name
    
    其中 webcontainerpassword 是 Portlet 应用程序的 Web 容器的口令,portlet-name 是要取消部署的 Portlet 应用程序的名称。

    注意:有关 pdeploy undeploy 的完整描述,请参见《Sun Java System Portal Server 6 2005Q1 技术参考指南》中的第 11 章
 
为 Portlet 注册频道
 
现在,您将使用 Sun Java System Access Manager 管理控制台来更新门户服务器显示配置文件以及为 Portlet 注册频道。管理控制台的缺省位置是 http://host:port/amconsole
 
  1. 以管理员身份登录到 Sun Java System Access Manager Administration Console。缺省的管理员登录名是 amadmin。在您登录后,控制台缺省情况下选择位置窗格中的 "Identity Management",导航窗格显示创建的所有组织。

  2. 选择要为其添加频道的组织、子组织或角色。当您以被委托管理员的身份登录时,控制台会自动转至您具有管理权限的组织、子组织或角色。

  3. 在导航窗格中,从 "View" 菜单中选择 "Services"。

  4. 打开 "Portal Desktop" 属性页。在导航窗格中,单击 "Portal Desktop" 旁边的属性箭头。这将在数据窗格中打开 "Desktop" 属性页。

  5. 单击 "Desktop" 页中的 "Manage Channels and Containers" 链接。将显示 "Channels" 页,且容器路径设置为根级别。

  6. 单击 "New Portlet Channel" 打开 "New Channel" 页,并将 Portlet 频道添加到显示配置文件的根目录。

  7. 在 "New Channel" 页中,(在该页中概述的规则后面)输入频道名称并选择 Portlet 标识符。Portlet 标识符菜单列出了从 IDE 导出的 Portlet。

  8. 单击 "OK" 以创建频道。此时将出现 "Channels" 页。通过滚动到频道列表可以查看刚创建的 Portlet 频道。
 
将频道添加到容器
 
接下来,将刚创建的频道添加到容器,以便该频道显示在门户桌面上。您将使用 Sun Java System Access Manager Administration Console 将频道添加到容器。
 
  1. 在 "Channels" 页顶部的 "Container Channels" 列表中,单击要为其添加新 Portlet 频道的容器的名称。

    例如,对于缺省的样例门户,MyFrontPageTabPanelContainer 是该门户上前页标签的容器。

  2. 滚动到 "Channel Management",然后选择刚才创建并注册的频道。

  3. 单击选项的 "Add" 按钮以将频道移动到 "Available to End Users on the Content Page"。

  4. 在频道仍处于选定状态下,单击选项的 "Add" 按钮以将频道移动到 "Visible on the Portal Desktop"。

  5. 单击 "Save"。
注意:在为 Portlet 应用程序更新 Sun Java Portal Server 6 显示配置文件后,如果取消部署和重新部署同一 Portlet 应用程序,则不必执行进一步的更新(假定您保持相同的 Portlet 和频道名称)。
 
要了解有关管理显示配置文件的详细信息,请参见《Sun Java System Portal Server 6 2005Q1 管理指南》中的第 10 章
 

在 Sun Portal Server 7 上部署 Portlet

 
本部分介绍了如何在 Sun Portal Server 7 上执行部署步骤。您将设置 Portlet 部署值,为 Portlet 注册新的频道,然后将 Portlet 添加到该频道。
 
除非另有说明,否则该部署步骤是在运行 Sun Java Portal Server 7 的目标系统上执行的。
 
设置 Portlet 部署值
 
  1. 登录到 http://your-host:port/psconsole 上的门户管理控制台,其中 your-host 是运行 Sun Portal Server 7 的主机的名称,port 是 http 端口号。

  2. 选择 "Deploy Portlet"。

    将打开 "Deploy Portlet" 向导,该向导与下图类似。

    图 6:"Deploy Portlet" 向导
    图 6:"Deploy Portlet" 向导
     
  3. 输入以下值:

    部署设置    
    Select Portal
    portal1
    Select Location
    DeveloperSample


  4. 单击 "Next"。

  5. 选择 "File"。

    将打开 "Choose a War File" 窗口,并显示运行 Sun Portal Server 7 管理控制台的目标文件系统上的文件。选择在前面复制到目标系统上的 Portlet WAR 文件。

  6. 单击 "Finish"。
 
选择 Portlet 的门户和位置
 
  1. 选择 "Manage Channels & Containers"。

    将打开 "Manage Channels & Containers" 向导。

  2. 输入以下值:

    设置    
    Select Portal
    portal-name,该 portal-name 是目标门户的名称
    Select Location
    DeveloperSample


  3. 单击 "OK"。
 
为 Portlet 创建新频道
 
  1. 选择 JSPTabContainer 下的标签容器 MyFrontPageTabPanelContainer。

  2. 选择 "Container Tasks" 下的 "New Channel/Container"。

    将打开 "New Channel" 向导,该向导与下图类似。

    图 7:"New Channel" 向导
    图 7:"New Channel" 向导
     
  3. 输入以下值:

    设置    
    Select Portal
    portal1
    Select Location
    DeveloperSample
    Type
    Channel


  4. 单击 "Next"。

  5. 对于 "Channel Type",输入 JSR 168 Portlet Channel,然后单击 "Next"。

    将出现 Portlet 列表。

  6. 选择已部署的 Portlet,然后单击 "Next"。

  7. 选择频道名称,然后单击 "Next"。

  8. 单击 "Finish"。
Portlet 应用程序将部署到生产 Sun Portal Server 7。现在您可以登录到 Sun Portal Server 桌面来测试 Portlet 频道。测试用户帐户的登录名是 developer,口令是 developer
 
要了解有关 Sun Portal Server 7 的详细信息,请参见 Sun Java System Portal Server 7 文档。
 
另请参见
 
更多的开发者资源
 
有关为开发者提供的更多教程、文章、提示和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源
 

 
此页的最新修改时间:2006 年 4 月 14 日