您的位置:首页 > 其它

在基于XMLAccess的Portlet发布中使用WAR文件名

2012-05-04 03:18 113 查看
当使用XMLAccess进行Portlet发布时, 如果portlet.xml中的<portlet-app>标签没有定义id属性时,可以在XMLAccess请求脚本中使用WAR文件名来定义uid, 示例如下:

<request
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="PortalConfig_7.0.0.xsd"
type="update"
create-oids="true">

<portal action="locate">
<web-app action="update" active="true" uid="WAR_FILE_NAME.webmod">
<url>file:///PATH_TO_THE_WAR_FILE</url>
<portlet-app action="update" active="true" uid="WAR_FILE_NAME">
<portlet action="update" active="true" name="TestPortlet" objectid="theTestPortlet" />
</portlet-app>
</web-app>
</portal>
</request>

当使用该脚本来安装一个新的portlet时, 工作正常, 但如果重复运行该脚本以更新一个已安装的portlet时, XMLAccess报错提示DuplicateAppException EJPPF0181E The id=XXX already exists for stored standard portlet application。

解决方法是在XMLAcess脚本的<web-app>标签中添加一个uniquename属性, 示例如下:

<request
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="PortalConfig_7.0.0.xsd"
type="update"
create-oids="true">

<portal action="locate">
<web-app action="update" active="true" uid="WAR_FILE_NAME.webmod" uniquename="SOME_UNIQUE_NAME">
<url>file:///PATH_TO_THE_WAR_FILE</url>
<portlet-app action="update" active="true" uid="WAR_FILE_NAME">
<portlet action="update" active="true" name="TestPortlet" objectid="theTestPortlet" />
</portlet-app>
</web-app>
</portal>
</request>

如此,该脚本可用于安装新的portlet, 也可根据uniquename属性值来更新一个已安装的portlet。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: