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

本文介绍了一种使用XMLAccess更新portlet的方法。通过为<web-app>标签添加uniquename属性,可以避免因重复运行更新脚本而导致的DuplicateAppException错误。此方案既适用于安装新的portlet,也适用于更新已安装的portlet。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值