入口網站和 Portlet 工具的版本注意事項

© Copyright International Business Machines Corporation 2006. All rights reserved.US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

版本注意事項

1.0 限制
   1.1「問題」視圖中顯示中斷鏈結的警告訊息
   1.2 Portal Designer 中的標記支援
   1.3 預設顏色選用區使用不正確
2.0 已知的問題和暫行解決方法
   2.1「新建入口網站專案」精靈的「目標執行時期」和入口網站伺服器版本需要手動同步化
   2.2 在「樣式」對話框編輯 CSS 內容類型 JSP 檔
   2.3 為 JSF 產生的服務用戶端程式碼不適用於 JSR 168 Faces Portlet
   2.4 匯入入口網站專案時出現「檔案不一致」訊息
   2.5 無法執行沒有 Portlet app id 的 JSR 168 Portlet 或無法執行含有這類 Portlet 的入口網站專案。
   2.6 即使 WebSphere Portal 6.0 伺服器在執行中,但偵測到的狀態是「已停止」
   2.7 執行我的入口網站專案或部署至 Portal 6.0 之後,頁面中未顯示 Portlet
   2.8 使用 Document-Literal 樣式 WSDL 來建立「商業程序」訊息時,精靈中未顯示訊息名稱。
   2.9 如果 JSR 168 Portlet 專案包含不同類型的 Portlet,則協同式精靈預設動作參數可能不正確。
   2.10 當唯一名稱的預設值變更時,作業頁面儲存器無效
   2.11 從 Rational Developer 6.x 移轉的某些入口網站專案在部署期間可能導致 NoModuleFileException
   2.12 設定 Faces Portlet 的 PARENT_LAST 類別載入器模式
   2.13 若為使用 Rational Developer 6.x 建立的入口網站專案,則「在 WebSphere Portal 5.1 版測試環境中執行」可能失敗
   2.14「範例展示區」中的入口網站和 Portlet 範例及「匯入入口網站精靈」依能力來過濾

1.0 限制

1.1「問題」視圖中顯示中斷鏈結的警告訊息

使用「新建入口網站專案」精靈從範例展示區匯入「入口網站」專案範例或建立入口網站專案時,「問題」視圖中會出現中斷鏈結警告訊息。

1.2 Portal Designer 中的標記支援

在這一版的 Rational® Developer 中,Portal Designer 僅支援顯示 HTML、cHTML 及 WML。如果您在匯入的專案中為頁面或標籤指定其他支援的標示語言,則 Rational Developer 支援顯示這些標示語言,但無法編輯。這些標示語言不會出現在「內容」視圖中。

1.3 預設顏色選用區使用不正確

除非指派顏色選用區給頁面,否則 WebSphere® Portal 6 會使用預設的顏色選用區。不過,在 Portal Designer 中,如果未指定顏色選用區,則會使用上代頁面的顏色選用區來代替預設選用區。

2.0 已知的問題和暫行解決方法

2.1「新建入口網站專案」精靈的「目標執行時期」和入口網站伺服器版本需要手動同步化

在「新建入口網站專案」精靈中,選取入口網站伺服器版本不會自動更新目標執行時期。必須手動同步化入口網站伺服器版本和目標執行時期設定。例如,您必須為 6.0.0.x 的入口網站伺服器版本選取 WebSphere Portal 6.0 版執行時期,必須為 5.1.0.x 的入口網站伺服器版本選取 WebSphere Portal 5.1 版執行時期。如果目標執行時期版本與入口網站版本不同步,則部署入口網站專案之後,入口網站伺服器會毀損或無法使用。

2.2 在「樣式」對話框編輯 CSS 內容類型 JSP 檔

在 WebSphere Portal 6.0 版中,以「樣式」對話框來編輯 CSS 內容類型 JSP 檔時,例如 styles.jsp 或 styles_theme.jspf, 對話框可能會顯示 JSP 表示式。這些 JSP 表示式無法在對話框上修改,只有在 CSS Designer 程式檔畫面中才能修改。

2.3 為 JSF 產生的服務用戶端程式碼不適用於 JSR 168 Faces Portlet

對於 JSR168 Faces Portlet,如果您使用下列任何工具在 Faces JSP 中產生服務用戶端,則產生的頁面程式碼無法在 WebSphere Portal 6.0 或 5.1 上正常運作。受影響的工具包括:

這起因於 jsf-portletbridge.jar 中的 JSR168 Faces Portlet 執行時期有不同於以往的新實作方式。

在新的實作中,Faces JSP 的 pagecode Bean(宣告為 request-scope managed bean 時)無法在 Portlet 的「動作」階段和「呈現」階段之間持續保留。在產生的 Web 服務用戶端程式碼中,「動作」階段會使用 pagecode Bean 來快取 Web 服務的結果。但因為是在要求範圍內,「呈現」階段會建立新的實例。因此會遺失快取的結果。

有兩個可能的解決方案:

  1. 將 Bean 放入階段作業範圍內(在 faces-config.xml 中配置)。只是在配置檔中變更一行而已。
  2. 不像 #1 那麼簡單,但卻是在 JSR168 Portlet 中實作服務用戶端的好方法。不但符合 JSR168 Portlet 程式設計的最佳實務,也提供更好的「上一步按鈕」和書籤支援。
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("resultValue", resultValue);
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
request.getPortletSession().put("resultValue", resultValue);
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("inputValue", inputValue);
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
String inputValue = request.getParameter("inputValue");

2.4 匯入入口網站專案時出現「檔案不一致」訊息

在匯入入口網站專案時,可能出現問題訊息框:「下列工作區檔案和編輯器不一致。請以工作區內容來更新編輯器」。請按一下「是」。 

2.5 無法執行沒有 Portlet app id 的 JSR 168 Portlet 或無法執行含有這類 Portlet 的入口網站專案。

根據 JSR 168 規格,Portlet app id 是選用的,但如果沒有 id,Rational® Developer 無法正確發佈 Portlet。如果缺少這些 id,Rational Developer 也不會產生 Portlet。如果從另一個來源匯入 Portlet,可能會建立 Portlet。若要解決這個問題,請開啟專案的 Portlet 部署描述子,在程式碼標籤中新增 Portlet 應用程式 ID。例如:
<portlet-app xmlns=... version=... xmlns:xsi=... xsi:schemaLocation=... id="ENTER_YOUR_ID_HERE">
...
</portlet-app>

2.6 即使 WebSphere Portal 6.0 伺服器在執行中,但偵測到的狀態是「已停止」

當伺服器在執行中時,如果偵測到的伺服器狀態是「已停止」,首先,請在伺服器編輯器中確定 SOAP/RMI 連接器埠已連接,且您使用的 WebSphere 安全認證是正確的。如果不正確,則偵測到的伺服器狀態一定不會是「已啟動」。如果都正確,但伺服器狀態仍為「已停止」,則可能是 WebSphere Application Server 6.1 版和 WebSphere Portal 6.0 版共存性的問題。

最常見的情況是 WebSphere Application Server 6.1 伺服器安裝在本端機器,然後您啟動新的工作區。在這個新的工作區,將自動建立並起始設定 WebSphere Application Server 6.1 伺服器實例,這會導致 Portal 6.0 狀態偵側不正常。如果您先建立 WebSphere Application Server 6.1 版伺服器,然後建立 Portal 6.0 伺服器,也會發生這個問題。

解決方案是以相同的工作區來重新啟動 Rational 產品。只要未起始設定 WebSphere Application Server 6.1伺服器,亦即狀態維持空白而非「已停止」或「已啟動」,Portal 6.0 伺服器實例就應該會正常運作。

2.7 執行我的入口網站專案或部署至 Portal 6.0 之後,頁面中未顯示 Portlet

執行我的入口網站專案或部署至 Portal 6.0 之後,頁面中未顯示 Portlet。為了降低這個問題的影響程度,只要不需要完整部署,就儘量使用「僅配置」部署。

如果發生此問題,請試著在入口網站專案上執行「僅配置」部署,不要部署任何 Portlet。這通常就可讓入口網站再次正常呈現 Portlet。

2.8 使用 Document-Literal 樣式 WSDL 來建立「商業程序」訊息時,精靈中未顯示訊息名稱。

如果建立新的「商業程序訊息」且 WSDL 檔案是 Document-Literal 樣式,則精靈的第二頁可能不會顯示輸入及輸出訊息名稱。您仍然可以選取訊息,並在精靈的右邊檢視訊息的詳細資料。不論精靈中是否顯示訊息名稱,產生的程式碼一定正確。 

2.9 如果 JSR 168 Portlet 專案包含不同類型的 Portlet,則協同式精靈預設動作參數可能不正確。

如果使用協同式精靈來建立來源或目標 Portlet,且 JSR 168 Portlet 專案包含多種 Portlet 類型,例如一個基本 Portlet 和一個 Struts Portlet,則精靈中的預設動作參數可能不正確。

在基本和 Faces Portlet 中,預設動作參數應該為 ACTION_NAME_PARAM,但使用者可以選取不同的值。
在 Struts 中,動作參數必須為 spf_strutsAction。

2.10 當唯一名稱的預設值變更時,作業頁面儲存器無效

下列是作業頁面儲存器中唯一名稱的預設值:
 WebSphere Portal 6.0 版:   ibm.portal.MyTasks
 WebSphere Portal 5.1 版:   wps.MyTasks

在 Portal Designer 中,如果使用另一個頁面,但唯一名稱不是以上列出的名稱,則 WebSphere Portal 在部署之後無法將頁面視為作業頁面儲存器的頁面。 

暫行解決方法:在部署之後,在「我的作業」Portlet 中,執行下列步驟來變更 TaskPageContainerUniqueName 參數的值:
 1.  開啟「管理 > Portlet 管理 > Portlet」
 2.  對於「我的作業」Portlet,按一下「配置 Portlet」按鈕
 3.  對於 TaskPageContainerUniqueName 參數,按一下「編輯」。
 4.  在 Portal Designer 中,使用下列這些值,將值改為新的唯一名稱:

  WebSphere Portal 6.0 版:   ibm.portal.MyTasks
  WebSphere Portal 5.1 版:   wps.MyTasks
 5.  按一下「確定」。 

2.11 從 Rational Developer 6.x 移轉的某些入口網站專案在部署期間可能導致 NoModuleFileException

如果入口網站專案已從 Rational Developer 6.x  移轉至 Rational Developer 7.0 工作區,則可能造成部署失敗,擲出 NoModuleFileException。發生此狀況時,請遵循下列程序來更正問題。

      <module id="WebModule_1163447032109">
          <web>
              <web-uri>wps.war</web-uri>
              <context-root>wps</context-root>
          </web>
      </module>
      <module id="WebModule_WSRP">
         <web>
            <web-uri>wps_facade.war</web-uri>
            <context-root>/wsrp</context-root>
         </web>
      </module>
      <module id="EjbModule_1">
          <ejb>wp.scheduler.ejb.jar</ejb>
      </module>
      <security-role id="SecurityRole_1">
         <description>Everyone in the enterprise.</description>
         <role-name>Everyone Role</role-name>
      </security-role>
      <security-role id="SecurityRole_2">
         <description>All Authenticated users in the enterprise.</description>
         <role-name>All Role</role-name>
      </security-role>
      <security-role id="SecurityRole_3">
         <description>No users in the enterprise.</description>
         <role-name>No Role</role-name>
      </security-role>

2.12 設定 Faces Portlet 的 PARENT_LAST 類別載入器模式

由於 WebSphere Portal 6.0 中隨附的 jsf-ibm.jar 版本太舊,如果 Portlet Web 模組的類別載入器模式設為 PARENT_FIRST,則某些 JSF 元件無法在 Portlet 中正確呈現。 這是因為當類別載入器模式設為 PARENT_FIRST 時,將會使用 WebSphere Portal 6.0 中的 jsf-ibm.jar,不會使用 Portlet Web 模組中的版本。

只影響 jsf-ibm.jar 中的元件,對應於 uri http://www.ibm.com/jsf/html_extended。Faces IBM Portlet 和 Faces JSR168 Portlet 都不受影響。

在下列情況下,Portlet Web 模組的類別載入器模式會設為 PARENT_FIRST,所以需要變更:

若要解決這個問題,請在含有 Portlet 專案的 EAR 專案中開啟 application.xml 檔案,然後開啟「部署」標籤。在「應用程式」區段中,找出顯示 EAR 和 Portlet 專案的樹狀結構。選取 Portlet 專案,然後將「類別載入器模式」從 "PARENT_FIRST" 改為 "PARENT_LAST"。可能需要重新發佈應用程式,才能讓變更在目標伺服器上生效。
不論是在 WebSphere Portal 管理頁面中或使用 xmlAccess 指令,如果使用 WAR 將 Portlet 直接安裝在 WebSphere Portal 中,則類別載入器模式已設為 PARENT_LAST。在此情況下,Portlet 不用任何暫行解決方法就可以正常運作。

2.13 若為使用 Rational Developer 6.x 建立的入口網站專案,則「在 WebSphere Portal 5.1 版測試環境中執行」可能失敗

如果以 Rational Developer 6.x 建立的入口網站專案 5.1.0.1 透過 Project Interchange 來匯入 Rational Developer 7.0 工作區,則「在 WebSphere Portal 5.1 版測試環境中執行」可能失敗。

暫行解決方法:使用下列步驟來修改 .portalsettings 檔案的內容:
 1. 開啟「視窗 > 開啟視景 > 其他...」。
 2. 在「開啟視景」對話框中選取「資源」,再按一下「確定」。
 3. 在「導覽器」視圖中展開入口網站專案。
 4. 選取 .portalsettings 檔案,然後利用「文字編輯器」開啟檔案。
 5. 插入下列程式碼:
    <?xml version="1.0" encoding="UTF-8"?>
    <portalSettings>
         <portal-version version="5.1.0.1"/>
         <portlets-ear-project portlets-ear-project-name=""/>
         <process-integration mytaskspage-uniquename="wps.MyTasks"/>
     </portalSettings>

2.14「範例展示區」中的入口網站和 Portlet 範例及「匯入入口網站精靈」依能力來過濾

必須啟用「Web 開發人員(進階)」能力,才能檢視「匯入入口網站」精靈及入口網站和 Portlet 範例(從「範例展示區」)。若要啟用此能力,請跳至「說明 > 歡迎使用」,在「歡迎使用」中按一下畫面角落的「啟用角色」按鈕。然後選擇啟用「Web 開發人員(進階)」角色。重新啟動精靈或「範例展示區」,讓變更生效。