从WebLogic Portal 8.1 SP3开始,有两种新方法能使打包在WAR文档中的portlets可以在门户中被访问。您可以将portlets集成为已有门户web应用的一部分,或者选择将portlets放在单独的web应用中。我们将分别利用Portlet Preparer Tool和Web services for Remote Portlets(WSRP)来展示这两种方法。您可以根据自己的需求选择最适合的方式:
· 单一WAR文件——使用portlet preparer 工具将WAR内容集成到现有项目中。如果您正在使用一小部分第三方portlets和您自己的门户项目,这种方式比较适用。
· 多个WAR文件——利用WSRP,可以将portlets保存在一个单独的WAR中,并从目标门户项目中引用它。如果您有大量项目拥有多个第三方portlets,最好考虑这种方式。
下面我们将详细介绍这两种方式。
单一WAR文件——使用Portlet Preparer工具
Portlet Preparer Tool作为一种工具可以从dev2dev网站获得:
http://dev2dev.bea.com/codelibrary/code/portletpreparer.jsp
这个工具从包含在WAR文件中的JSR168 portlets中创建.portlet文件,因此允许WebLogic Workshop将此文件的内容导入到一个门户Web项目中。运行preparer 工具的步骤是简单而直观的,有如下两种可选方式:
· 将portlets添加到一个新的项目。
· 将portlets添加到一个现有门户项目中。
以下是对于每种方式的步骤:
将portlets添加到一个新的项目
要导入一个包含JSR168 portlets 的WAR文档,完成以下步骤:
1. 将portletConverter.jar解压缩到硬盘的一个临时目录中(以下我们称此目录为<converter-root>)。
2. 将WAR文件移到<converter-root>中。
3. 将WEBLOGIC_HOME设置为env.sh 或者 env.bat(依平台而定)。
4. 运行env.sh 或者 env.bat(依平台而定)。
5. 运行ant -Dwar.file=(<war-file-name>是WAR文件的文件名)。
6. 在<converter-root>下生成一个叫做tempDir的目录。
7. 打开WebLogic Workshop并将tempDir作为一个门户Web项目导入。
将Portlets添加到一个现有门户项目中
要在现有门户Web应用中添加portlets,需要完成以下步骤:
1. 完成上述的第1-7步。
2. 复制所有必需的类文件到WEB-INF\classes目录,同时复制所有必需的jar文件到WEB-INF\lib目录。
3. 对web.xml作必要的修改(例如:servlet定义)。
4. 向每个加入的portlet的portlet.xml文件中添加元素(这些拷贝来自前面创建的tempDir 目录中的portlet.xml)。
5. 从tempDir\portlets中拷贝.portlet文件到您的Web应用中。
6. 将portlets添加到您的门户。
多个WAR文件:使用远程 Portlets Web 服务(WSRP)
利用WSRP,您可以在单独的Web应用中部署Java portlets,并从门户项目中引用它们。要了解关于WSRP如何工作的更多信息,请访问以下链接并下载WebLogic Portal 8.1 SP3:
· WSRP 概述: http://dev2dev.bea.com/products/wlportal81/articles/wsrp.jsp
· (下载WebLogic Portal 8.1 SP3) http://commerce.bea.com/index.jsp
以下场景中SamplePortal是一个主门户,从这里您可以创建到其他WAR文件中portlets的引用。这样就可以将不同WAR文件的portlets导入到SamplePortal中。
1. 创造一个不同的新门户项目。并按“将portlets添加到一个新的项目”中所描述的七个步骤来操作。
2. 启动门户示例的域,并登录到以下Administration Portal中:http://localhost:7001/portalAppAdmin .
3. 在Portals标签下,点击左边的Library。
4. 当树展开时,点击Portlet Producers图标。
5. 当producer资源面板出现在右侧后,点击“Browse/Add Producers”标签。
6. 在“Enter Producer to Browse”框中输入:http://localhost:7001/<new portlet war file>/producer?wsdl,点击“ok”。
7. 此时您将看到一列producer的属性,包括可用的portlet。点击“Add Producer”并且填写注册区域。
8. 注册之后,您将处于“ Available Producers ”窗口中。在“ Available Producers”框中,点击“Register”按钮,在对话框中,点击“Save”。
9. 点击您注册的Producer,并从门户中选出需要引用的portlet。
这时,点击库目录中的“All Portlets”就可以看到刚刚添加的远端portlet。在Available Portlets 框的Category下拉菜单中还有一个方便的portlet类别,“All Remote Portlets,”。现在您可以将远端portlet加入一个页面中供用户使用。
在此场景中,SamplePortal将扮演一个消费者的角色,而您的其他web应用将成为producer角色。
使Pluto Test Suite Portlets在SamplePortal中可用
下面用一个例子来重点说明在多个WAR文件中使用portlets。基本思想是在一个web应用中为其他web应用的WebLogic Portal提供一组可用的portlets。
在下面的例子中,我们从Apache下载了Pluto test portlets(JSR 168 - test suite)。接下来,我们创建一个新的web应用,使用portlet工具来导入WAR文件,最终使用WSRP来使他们在门户web应用中可用。
1. 从Apache上下载最新的Pluto test suite portlets(出于方便起见,本文中我们附带了一份拷贝)。
2. 使用 Portlet工具使WAR 为WebLogic Workshop导入做好准备。
注意,图中.portlet文件已经创建,同时WAR也已做好导入的准备。
3. 执行作为一个门户项目(获得168支持)的WAR文件的导入步骤。在Workshop中从您的应用点击导入选项就可以实现。
编辑portlet.tld文件,指向JSR 168标准的BEA实现(出于方便考虑,本文中我们附带了一个拷贝)
这时,您已经创建了一个新的web应用,并导入了168 portlets。现在让他们可以在其他web应用中使用。这个例子使用了SamplePortal web应用。有两种方式可以将这些portlet带入SamplePortal。您可以在Workshop中使用portlet wizard为新建的web应用创建一个引用,另外,您也可以在管理门户中创建一个引用。
下面的步骤将使用管理门户。确保已有一个门户和创建好的桌面。在这个例子中,可以使用SamplePortal模板生成一个门户“P1”和一个桌面“D1”。
1. 登录到管理门户。
2. 在SamplePortal中添加一个新页面,并且命名为Pluto Test。
3. 进入库中,选择portlet producers,并添加一个新的producers。
4. 输入地址:http://localhost:7001/<new_web_app>/producer?wsdl
5. 执行添加producer并且注册。
6. 返回并选择需要添加的portlet。在这个例子中,我们选择了“Test Portlet #1”,它是Pluto Test suite的一部分。
7. 切换到desktop“D1”,并选择添加一个portlet,选择“Test portlet #1”。
当启动桌面时,您将看到一个新的名为“Pluto Test”的页面,在页面中您将看到来自位于另一个单独web应用的Pluto test suite中的“Test Portlet #1”。
注意:SamplePortal位于sampleportal web应用中,而Pluto Test Suite Portlets位于我们创建的新Pluto web应用中。
其他需要考虑的事项
一个可能会降低部署时间的因素是使用了门户项目的缩微版本。您可以创建自己的只支持JSR 168而不支持其他服务的项目。与门户内容管理服务、Java页面流和其他非168服务相关的标签都将被删除。