为什么静态和动态资源更改未在自定义Portal 8.0主题中反映出来?

时间:2015-04-23 17:30:48

标签: jsp themes websphere portal websphere-portal

我在Windows 7计算机上使用Portal 8.0.0.1,并按照步骤创建基于Portal 8.0主题的自定义主题。我已经设置了我认为需要的所有属性,以便允许我对html和JSP文件进行编辑,然后门户可以识别这些文件而无需重新启动主题应用程序或门户网站,但它是不工作我试图了解在定制过程中可能错过的内容。

我按照这两个地方描述的步骤进行了操作:http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Deploying_and_developing_IBM_WebSphere_Portal_8_themes_A_step-by-step_guide

在这里:

https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20Websphere%20Portal%208%20WIKI

这些说明基本相同,但我不确定哪一套是原件;我还找到了相同说明的PDF文件。说明很棒,有很多详细的步骤,但在几个地方缺乏让我质疑我的新定制主题的完整性。说明假设了两件我无法实现的事情:

  1. 我正在使用RAD。

  2. 附加了用于向门户注册主题的示例XML访问文件。

  3. 说明依赖于RAD,这是我无法用Eclipse重现的一个主要步骤 - 创建ibm-web-ext.xmi和ibm-web-bnd.xmi文件。这些是IBM文件,只有RAD才会创建它们。我必须从其他项目中找到这些文件的副本,并尝试为这些说明中创建的Static和Dynamic Eclipse项目自定义它们。我知道ibm-web-ext.xmi文件是允许通过" reloadingEnabled"重新加载JSP的关键。属性,所以我确保按照指示启用该属性。除了该设置外,说明还指出需要将此行添加到Dynamic项目的Default.jsp文件中:

    --%><r:param name="max-age" value="2"/>
    

    所以我确保添加该行。

    静态项目的ibm-web-bnd.xmi文件的内容是:

    &#13;
    &#13;
    <?xml version="1.0" encoding="UTF-8"?>
    <webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_FpmTheme8Static" virtualHostName="default_host">
      <webapp href="WEB-INF/web.xml#WebApp_ID"/>
    </webappbnd:WebAppBinding>
    &#13;
    &#13;
    &#13;

    以及静态项目的ibm-web-ext.xmi文件的内容是:

    &#13;
    &#13;
    <?xml version="1.0" encoding="UTF-8"?>
    <webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappext="webappext.xmi" xmi:id="WebAppExtension_FpmTheme8Static" reloadInterval="3" reloadingEnabled="true" additionalClassPath="" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="false" preCompileJSPs="false">
      <webApp href="WEB-INF/web.xml#WebApp_ID"/>
    </webappext:WebAppExtension>
    &#13;
    &#13;
    &#13;

    并且动态项目的ibm-web-bnd.xmi文件的内容是:

    &#13;
    &#13;
    <?xml version="1.0" encoding="UTF-8"?>
    <webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_FpmTheme8Dynamic" virtualHostName="default_host">
      <webapp href="WEB-INF/web.xml#WebApp_ID"/>
    </webappbnd:WebAppBinding>
    &#13;
    &#13;
    &#13;

    并且动态项目的ibm-web-ext.xmi文件的内容是:

    &#13;
    &#13;
    <?xml version="1.0" encoding="UTF-8"?>
    <webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappext="webappext.xmi" xmi:id="WebAppExtension_FpmTheme8Dynamic" reloadInterval="3" reloadingEnabled="true" additionalClassPath="" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="false" preCompileJSPs="false">
      <webApp href="WEB-INF/web.xml#WebApp_ID"/>
    </webappext:WebAppExtension>
    &#13;
    &#13;
    &#13;

    那些看起来有效吗?是否有任何其他位置需要设置一些配置才能允许JSP重新加载?

    说明的第二个问题是未附加示例XML访问文件。我尽我所能创造了一个,它看起来像这样:

    &#13;
    &#13;
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- IBM WebSphere Portal/8.0.0.1 build wp8001CF12_001_15 exported on Mon Apr 20 22:51:09 EDT 2015 from BF904V1/192.168.7.89 -->
    <request build="wp8001CF12_001_15" type="update" version="8.0.0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PortalConfig_8.0.0.xsd">
        <portal action="locate">
            <skin action="update" active="true" context-root="/FpmTheme8" default="true" domain="rel"  resourceroot="Hidden" type="default" uniquename="FpmThem8.Hidden">
                <localedata locale="en">
                    <title>FPM Theme8 - Hidden</title>
                </localedata>
                <parameter name="com.ibm.portal.skintype" type="string" update="set"><![CDATA[template]]></parameter>
                <parameter name="com.ibm.portal.skin.template.file.name.html" type="string" update="set"><![CDATA[skin.html]]></parameter>
                <parameter name="com.ibm.portal.skin.template.ref" type="string" update="set"><![CDATA[war:FpmTheme8Static/themes/Portal8.0/skins/Hidden/]]></parameter>
            </skin>
            <skin action="update" active="true" context-root="/FpmTheme8" default="false" domain="rel" resourceroot="Standard" type="default" uniquename="FpmTheme8.Standard">
                <localedata locale="en">
                    <title>FPM Theme8 - Standard</title>
                </localedata>
                <parameter name="com.ibm.portal.skintype" type="string" update="set"><![CDATA[template]]></parameter>
                <parameter name="com.ibm.portal.skin.template.file.name.html" type="string" update="set"><![CDATA[skin.html]]></parameter>
                <parameter name="com.ibm.portal.skin.template.ref" type="string" update="set"><![CDATA[war:FpmTheme8Static/themes/Portal8.0/skins/Standard/]]></parameter>
            </skin>
            <skin action="update" active="true" context-root="/FpmTheme8" default="false" domain="rel" resourceroot="NoSkin" type="default" uniquename="FpmTheme8.NoSkin">
                <localedata locale="en">
                    <title>FPM Theme8 - No Skin</title>
                </localedata>
                <parameter name="com.ibm.portal.skintype" type="string" update="set"><![CDATA[template]]></parameter>
                <parameter name="com.ibm.portal.skin.template.file.name.html" type="string" update="set"><![CDATA[skin.html]]></parameter>
                <parameter name="com.ibm.portal.skin.template.ref" type="string" update="set"><![CDATA[war:FpmTheme8Static/themes/Portal8.0/skins/NoSkin/]]></parameter>
            </skin>
            <theme action="update" active="true" context-root="/FpmTheme8" default="false" domain="rel" resourceroot="dynamicSpots" uniquename="FpmTheme8">
                <localedata locale="en">
                    <title>FPM THEME8</title>
                </localedata>
                <parameter name="com.ibm.portal.theme.dnd.sources" type="string" update="set"><![CDATA[ibmDndColumn:com.ibm.pb.dnd.layout.LayoutColumnSource:vertical,ibmDndRow:com.ibm.pb.dnd.layout.LayoutRowSource:horizontal]]></parameter>
                <parameter name="ibm.portal.shelf.category.json.socialrendering" type="string" update="set"><![CDATA[system/SocialCategory.json,label:shelf_communicationsCategory]]></parameter>
                <parameter name="com.ibm.portal.layout.template.href" type="string" update="set"><![CDATA[war:FpmTheme8Static/themes/Portal8.0/layout-templates/1Column/]]></parameter>
                <parameter name="com.ibm.portal.theme.aggregationmodes" type="string" update="set"><![CDATA[ssa]]></parameter>
                <parameter name="resourceaggregation.profile" type="string" update="set"><![CDATA[profiles/profile_full.json]]></parameter>
                <parameter name="com.ibm.portal.theme.template.ref" type="string" update="set"><![CDATA[war:FpmTheme8Static/themes/Portal8.0/]]></parameter>
            </theme>
        </portal>
        <status element="all" result="ok"/>
    </request>
    &#13;
    &#13;
    &#13;

    我记得在早期的安装中我已经设置了&#34; resourceaggregation.development.mode&#34;属性(WP ConfigService资源环境提供程序)在从Portal 8.0主题复制静态资源之前按照指示为true - 这是我认为可能与此问题远程相关的唯一其他配置。

    我已经将这个自定义主题分配给某些页面,看起来他们的行为正确。使用这个新的自定义主题时,我没有看到任何功能或行为问题,但我根本无法让JSP重新加载。

    对于调试此内容我应该注意什么?

    谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

我向IBM发布了同样的问题,并与他们一起打开了PMR票证。我发给他们打包的EAR文件供他们查看。他们将EAR文件部署到他们的Portal8.0.0.1 / CF16环境中但无法重现问题 - 但是当他们将其部署到Portal8.0.0.1 / CF12 环境中时,他们看到了一样的问题。他们的建议是从CF12升级到CF16。升级现在不是我们项目的选项,所以我探索了尝试将自定义主题部署为单个WAR文件的替代选项,希望这样做。我的尝试基于http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Create_a_custom_theme_without_WebDAV_with_8.0的指令,并最终成功地将新的自定义主题部署在单个WAR文件中,然后JSP重新加载适用于静态和动态资源。它不是我想要的完美解决方案,因为IBM鼓励使用CF16推进EAR解决方案,但它目前正在为我工​​作。

答案 1 :(得分:0)

我找到了Portal 8.5的解决方案,我希望它可以帮助到达这里的人。就我而言,我试图在没有部署的情况下重新加载主题中的jsps。 @okorng您的文件似乎没问题,但您错过了jsp-attributes:

<jsp-attribute name="reloadEnabled" value="true"/>
<jsp-attribute name="reloadInterval" value="3"/>

我使用xml而不是xmi,但你可以在这里看到一个例子: https://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tweb_jspengine.html

这是我最后的ibm-web-ext.xml(在动态和静态项目中):

<?xml version="1.0" encoding="UTF-8"?>
<web-ext
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_1.xsd"
    version="1.1">

    <jsp-attribute name="reloadEnabled" value="true"/>
    <jsp-attribute name="reloadInterval" value="3"/>

    <reload-interval value="3"/>
    <context-root uri="/wps/XXX_Theme" />
    <enable-directory-browsing value="false"/>
    <enable-file-serving value="true"/>
    <enable-reloading value="true"/>
    <enable-serving-servlets-by-class-name value="false" />
</web-ext>

请注意,reloadInterval必须具有与reload-interval相同的值或不会部署主题:)