WebSphere Product Center:支援手冊

 

5.2 版

 

 

 

 

 

 


請注意! 在使用這項資訊和它所支援的產品之前,請務必先閱讀本文件結尾「注意事項」中的資訊。

2005 年 3 月 23 日

本版文件適用於 WebSphere Product Center 5.2 版 (5724-I68) 及所有後續版本和修訂,除非新版另有指示。

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

目錄

第 1 章 WebSphere Product Center 監視作業

    WebSphere Product Center 服務
        取得服務的簡要狀態
        取得服務的詳細狀態

    資料庫監視和管理
        1. 必要時配置其他空間
        2. 套用修正套件/修補程式集
        3. 啟動和關閉資料庫/資料庫管理程式
        4. 分析資料庫綱目和收集統計資料
        5. 重組表格和索引
        6. 檢查已排定之備份工作的狀態
        7. 還原和回復資料庫
        8. 調整資料庫效能

第 2 章 WebSphere Product Center 效能

    管理磁碟空間
        暫存檔
    快取網頁
   硬體規格

第 3 章 資料庫管理

    資料庫使用者
    資料庫備份
       實體備份    
       邏輯備份
    資料庫性能檢查
       設定 DB2 性能中心警示
    資料庫管理工具箱

第 4 章:文件儲存庫

   目錄
    架構
    管理表格空間
    刪除檔案
    BLOB 的選用性 GZIPing
    磁碟重組
   文件儲存庫常見問題

第 5 章 備份和回復

   WebSphere Product Center 備份
    資料庫備份
    回復

第 6 章 WebSphere Product Center 日誌程式

   WebSphere Product Center 服務日誌配置檔
    執行時期產生的日誌
    配置日誌檔
        變更位置
        變更檔案大小
        變更檔案備份選項
        變更轉換型樣
    轉換指定元
    格式修飾元
    轉換字元
    WebSphere Product Center 記載設定檔

第 7 章:拼字檢查配置

        限制
        拼字檢查功能
    啟用拼字檢查程式
        需求
        配置 WebSphere Product Center 來使用 WinterTree Spelling Engine 執行時期配置

第 8 章:安全

    LDAP 整合
        特性概觀
        功能概觀
        假設
        限制
        移轉 5.2 之前版本的影響
    整合 LDAP 與 WebSphere Product Center
        1. 配置使用者和角色的 LDAP 綱目
        2. 編輯 LDAP 配置檔
        3. 重新啟動系統

第 9 章:疑難排解

    工具
    應用程式伺服器問題
        環境問題
        常見的不正確配置檔設定
    應用程式伺服器無回應
    資料庫問題
        1. 資料匯出/匯入期間的字元轉換
        2. 資料庫空間配置問題
        3. 刪除正在執行的工作之後,WebSphere Product Center 速度變慢
        4. 重做日誌切換問題
        5. WebSphere Product Center 中介軟體當掉且 GUI 凍結
        6. 分析綱目工作當掉
    監視日誌檔中的錯誤
    連線功能問題
        HTTP 公佈錯誤
        FTP 提取錯誤
        測試 Java 連線功能
    其他問題
       停止及重新啟動 WebSphere Product Center

第 10 章 - 移轉組織架構

    從 4.2.0.x 移轉至 5.2
        匯出公司
        匯入公司
        對移轉的影響
    從 4.2.1 移轉至 5.1

第 11 章 Web 服務支援

    Web 服務定義語言 (WSDL) 支援
    Web 服務使用者介面
    支援 Web 服務的 Script 作業
    支援 Document/Literal 樣式

第 12 章 - 指令行工作介面

    排程器和 IBM Tivoli Workload Scheduler 的整合
    透過指令行介面控制排程器

第 13 章 - 整合最佳作法

   定義和字首語
    整合要素
        WebSphere Product Center 作為來源或目標系統
        控制系統
        通訊協定
        格式
        資料大小
        通訊類型
        頻率
        整合執行緒
        字首語
    設計原則
        可重複使用
        資訊分享
        資訊處理
        事件處理
        變更追蹤
        可重複使用的連接器
    實作
    調整實作
    效能調整
    驗證
        穩定性
    可調整的測試
    可見性
    報告
    文件
    WebSphere Product Center 整合最重要的十項準則
        使用明確、常用的專有名詞來說明整合
        可重複使用
        可見性
        小型整合
        代表性環境和完整環境
        可調整的程序測試
        效能
        及早建立單一執行緒
        設計規格和文件
        單一擁有者
    EAI 平台整合
        方式
    其他優點

注意事項

第 1 章 Websphere Product Center 監視作業

您可以利用 rootadmin rmi_status Script 或透過 GUI 來完成 WebSphere Product Center 監視作業。WebSphere Product Center 未提供獨立式監視工具。

監視工具的建立不在本文件討論的範圍;不過,還是有幾個值得一提的簡單的構思:


取得服務的簡要狀態

如果要取得服務的簡要狀態,請傳遞下列參數:

-cmd=check -svc=<service name>

簡要狀態會傳回下列狀況之一:

執行中 服務正在執行中,且正在對 "heartbeat" 函數做出回應。
找不到 找不到服務。服務可能未啟動或已毀損。
已找到,但無回應 已找到服務,並得知它利用 RMI 登錄進行登錄,但它未對 "heartbeat" 函數做出回應。可能必須重新啟動服務。

取得服務的詳細狀態

如果要取得服務的詳細狀態,請將下列參數傳遞到 rootadmin.sh:

-cmd=status -svc=<service name>

這會產生一個可用任何瀏覽器來檢視的 HTML 檔。 在終端機上,請利用 Lynx(或類似工具)來將輸出格式化。

狀態會大略說明正在服務中執行的不同執行緒,以及目前由服務掌控的資料庫連線之狀態。

範例:

如何取得排程器的狀態:

rootadmin.sh -cmd=status -svc=scheduler > /tmp/sch_status.html; lynx /tmp/sch_status.html

rootadmin.sh -cmd=status -svc=scheduler > /tmp/sch_status.html; lynx -dump /tmp/sch_status.html

附註:上述範例所用的 ">" 會將狀態詳細資料導向檔案輸出位置。


資料庫監視和管理

因為關聯式資料庫是大量產品資訊內容的主要儲存體,所以,請務必提供管理動作來防止效能的退化和流失。

在 WebSphere Product Center 中設定警示可提供可能發生之問題的通知,以便在問題失控前予以解決。 此外,還應該實作監視系統,以經常監視 WebSphere Product Center 資料庫。

應定期執行下列作業。

1. 在必要時,配置更多空間

對大部分的人而言,空間管理是一項持續的作業。除非是完全靜態的資料庫,否則表格和索引的大小都會定期增減。您必須確定有充分的空間足以應付上述情況,以免岔斷進行中的處理程序。此外,您還必須協助確定已充分利用該空間。必要時可利用「DB2 控制中心」來配置空間。您也可以利用指令行介面來完成相同的作業。

2. 套用修正套件/修補程式集

修正套件/修補程式集是資料庫系統供應商的一項機制,用以定期遞送已完整測試及整合的產品修正程式。 它們只提供錯誤修正程式,不包含新功能,而且在目標系統上也不需要認證。如果有修正套件/修補程式集,請務必套用,以避免有關資料庫系統的任何已知問題。請聯繫資料庫系統供應商,以取得有關修正程式的詳細資訊。

3. 啟動及關閉資料庫管理程式和資料庫

當您要套用修正程式、將資料庫從某一伺服器移至另一伺服器,或執行其他類似作業時,您必須關閉資料庫管理程式/資料庫。必要時您必需啟動/關閉資料庫。

4. 分析資料庫綱目及收集統計資料

分析資料庫綱目可讓您收集有關資料庫中的表格和索引的最新統計資料。成本型最佳化方式可利用統計資料來判斷每一執行計劃成本的預估值。定期收集統計資料可為最佳化程式提供有關綱目物件的最佳資訊。比方說,在表格中載入大量列數之後,您必須收集表格的新統計資料。

如果要分析資料庫綱目,請執行 Shell Script analyze_schema.sh(位於 $TOP/src/db/schema/util 目錄)。

5. 重組表格和索引

建議您定期重組表格和索引,以提升效能

目前的資料庫成長速度比以前快,所以,典型的 DBA 必須花費大量的時間來執行空間管理和重組,才能達到最佳效能。

最佳效能意味著最佳回應時間。但最佳效能會因為一些空間管理問題而降低效能。這些問題多半歸類於三個主要方面,也就是表格相關問題、停滯索引及 I/O 平衡和資料分割

大部分的 DBA 都會遇到表格相關問題。這些問題包括表格區塊內未充份使用的空間、鏈列、資料近似性不佳及片段(過度延伸)表格。

效能挑戰方面的第二個主要問題就是停滯索引。有 ¾ 數的索引變大且零星移入。

此狀況會大幅降低索引範圍掃描的效能。它也會浪費大量的磁碟空間。

效能挑戰方面的第三個主要問題就是 I/O 平衡和資料分割。如果經常存取位於相同資料檔中的物件,就會造成 I/O 瓶頸。DB2 中的 reorgchk 這類工具可為您提供有關哪些物件需要重組的資訊。有許多可用的方法和工具可供您重組資料庫物件。請閱讀資料庫系統供應商有關重組表格和索引的專屬文件。

6. 檢查已排定之備份工作的狀態

備份是還原和回復程序不可或缺的一部分。 請驗證所有備份工作的狀態,以確定它們已依排定方式執行。

備份狀態的檢查,取決於備份程序的定義方式及備份時所用工具。請詳讀資料庫系統供應商所提供之有關備份的專屬文件,以取得詳細資訊。

7. 還原和回復資料庫

如果資料庫失效,請判斷失效的類型和範圍。所做分析應該會指示回復系統所需採取的步驟。請依 IT 支援群組的定義來使用還原及回復程序。

還原實體備份,就是重新建構它,然後供資料庫伺服器使用。回復還原的資料檔,就是利用重做記錄(也就是取用備份後對資料庫所做變更的記錄)來更新它。

8. 調整資料庫效能

DBA 最大的責任之一,就是確定已適當調整資料庫。任何 RDBMS 都有很高的可調整性,並可監視及調整資料庫來提升它的效能。

以下是應該要做效能調整的原因:

讓硬體的使用最佳化,以節省金錢(公司必須花費數百萬的硬體費)。

請參閱 DB2 產品所提供的產品文件,以取得有關調整資料庫效能之不同方法的詳細資訊。

第 2 章 WebSphere Product Center 效能


管理磁碟空間

建議使用 30-50 GB(十億位元組)的可用空間,以供 WebSphere Product Center 中介軟體和暫時分割區使用。

在叢集式配置中,應用程式伺服器必須用到共用儲存體。雖然可以利用 rsync 之類的公用程式來同步化靜態 HTML 檔和影像檔,不過,也建議您採用 Web 伺服器的共用儲存體。

就應用程式伺服器而言,ftp 目錄 $TOP 和 Web 伺服器的文件根目錄(靜態 HTML 和影像的位置)通常位於共用裝置上,而支援應用程式(如 Apache、JDK 及應用程式伺服器)則安裝在本端儲存體上。日誌可保存在本端儲存體或共用儲存體上。common.properties 中指定的 temp 目錄應該是本端目錄。

暫存檔

下列目錄保有執行時期所產生的暫存檔案,且位於檔案系統上:

附註:暫存檔目錄可能會隨著所安裝的 WebSphere Product Center 版本而不同。

$TOP/public_html/created_files/distributor

Linux 使用範例

cd $TOP/public_html/created_files/distributor

find . -type f -mtime +7 -exec ls -l {} \; <-- 檢視所要刪除的檔案

find . -type f -mtime +7 -exec rm -f {} \; <-- 刪除檔案。

$TOP/public_html/suppliers/company code/aggregated_files/

$TOP/public_html/suppliers/company code/tmp_files/

$TOP/logs


快取網頁

WebSphere Product Center 的預設安裝是設定成指示 Proxy 伺服器「不」快取頁面。允許快取頁面,會嚴重限制使用瀏覽器之上一頁按鈕的功能,進而產生錯誤訊息和過期的頁面。如果需要快取,請使用 GUI 瀏覽特性,盡量不要使用「上一頁」按鈕。

編輯檔案:common.properties
參數:no_cache_directive=on/off

依預設,參數是設定為關閉

如果設定為開啟,它會將回應參數設定成指示 Proxy 伺服器不快取頁面,並嚴重限制使用瀏覽器之上一頁按鈕的功能

如果設定為關閉,瀏覽器的上一頁按鈕就可正常運作,不會導致錯誤發生。


硬體規格

根據最佳作法、以往的體驗及容量需求來選擇硬體規格,才能讓 WebSphere Product Center 發揮最佳效能。

應用程式伺服器

WebSphere Product Center 中大部分的資料物件都儲存在資料庫伺服器內。因此,應用程式伺服器上的磁碟儲存體只能用來儲存 OS 元件、WebSphere Product Center 執行檔協力廠商元件、WebSphere Product Center 暫時工作檔及 WebSphere Product Center 日誌。

WebSphere Product Center 中介軟體可使用數種 J2EE 元件,這些元件每一個都會耗用大量記憶體。WebSphere Product Center 建議具備含有 4GB 記憶體的應用程式伺服器, 其中的 2.5GB 通常都用在 WebSphere Product Center 中介軟體的實例。

資料庫伺服器

資料庫伺服器的大小取決於多項因素。這些因素可能包括型錄項目的數量、關聯於每一項目的屬性之數量,以及型錄屬性的大小。

安全的簡略規則,就是每項屬性各配置 8kb 的空間。以含有 500,000 個項目,每一項目各含 14 項屬性的型錄為例,此型錄至少需要 56GB(500,000 個項目 x 14 項屬性 x 8kb)的資料庫儲存體。

此空間不包括資料庫二進位檔、復原區段、暫存表格空間等等所需的空間。

建議使用的架構

如果要利用 WebSphere Product Center 處理大量批次工作,建議使用選用性排程器伺服器處理背景交易的選項。

第 3 章 資料庫管理


資料庫使用者

資料庫使用者和密碼(針對 WebSphere Product Center 安裝而建立的)定義於 common.properities 中。變更資料庫使用者的密碼而不更新 common.properties 檔,會使 WebSphere Product Center 中介軟體毀損。如果需要變更資料庫使用者的密碼,請務必更新 common.properties 中的內容 db_password。在 DB2 中,密碼鑑別屬於作業系統層次。


資料庫備份

備份及回復資料庫是資料庫管理者 (DBA) 所執行的最重要的作業之一。 因此,實作一項定義完善的備份和回復策略是非常重要的事。建議您藉由下列備份策略,利用 WebSphere Product Center 來維持最佳效能。

實體備份

WebSphere Product Center 建議每天進行資料庫實體備份。您可根據系統停用時間的可用性,來進行資料庫離線實體備份(影像備份)或資料庫線上實體備份(熱備份)。大部分 WebSphere Product Center 資料庫的存取作業都是 24 小時全年無休,換句話說,可能沒有任何可用的停用時間可進行資料庫離線備份。在 DB2 中,資料庫必須在 logretain 模式下執行,才能進行資料庫線上備份。進行資料庫線上備份,可讓您將資料庫回復為某特定時間點的狀態。請參閱 DB2 產品文件,以取得詳細資訊。

邏輯備份

邏輯備份可儲存有關針對資料庫建立之綱目物件的資訊。您可利用 DB2 中的 DB2MOVE 公用程式,來選擇性地匯出特定的物件,以強化資料庫備份策略中的保護功能和彈性。資料庫匯出項目並非實體備份的替代方案,而且無法提供實體備份所能提供之相同完整回復的優點。有時候,邏輯備份很方便讓您利用生產資料來設定 QA 或測試實例。WebSphere Product Center DBM 工具箱也提供有關進行 WebSphere Product Center 資料庫綱目邏輯備份的 WebSphere Product Center 專屬指示。


資料庫性能檢查

定期檢查資料庫系統的健康,有助於提高系統的可用性。

設定 DB2 性能中心警示

必要時,您可利用「DB2 性能中心」監視資料庫環境的狀態並做必要的變更。 健康監督程式會持續監視一組健康指示符。如果健康指示符的現行值超過它的警告和鬧鈴聲臨界值所定義的 可接受運作範圍,健康監督程式就會產生健康警示。DB2 隨附一組預先定義的臨界值,您稍候可自訂該值。

以下是您可利用「健康中心」執行的一些重要作業:


資料庫管理工具箱

有數種 db 管理 Script 可供您管理 WebSphere Product Center 資料庫。這些 Script 全部以工具箱的形式放在一起。

以下是 DB2 工具箱所包含的不同作業:

第 4 章:文件儲存庫

「文件儲存庫」是 WebSphere Product Center 中用來儲存每一個送入和送出檔案的區域。這包括匯入輸送、Script、報告及規格檔。

GUI 結構提供資料庫所儲存檔案的超鏈結,其實,這些超鏈結就是這些檔案的位置指標。

目錄

文件儲存庫以檔案結構的方式顯示。您可從下列「文件儲存庫」目錄存取檔案:

archives

public_html

eventprocessor

schedule_logs

feed_files

scripts

ftp

tmp

params

users

Ftp 和 public_html 是裝載至「文件儲存庫」中的檔案系統目錄。它們定義於 $TOP/etc/docstore_mount.xml 中。此檔案提供各種 OS 檔案系統裝載點的位置。

所使用的變數是 "$ftp_root_dir" 和 "$supplier_base_dir",這些變數定義於配置檔 common.properties 中。

架構

資料庫具有針對儲存於文件儲存庫的檔案指定的表格空間。當檔案儲存於文件儲存庫時,DB 中就會建立新記錄。資料庫會將檔案儲存為 BLOB(二進位大型物件)檔。

BOLB 檔是指必須儲存在資料庫中的任何隨機大型位元區塊,如圖片或音效檔。關於 BLOB,必須特別留意的是它是一個無法在資料庫本身內解譯的物件。

資料庫將 BLOB 儲存在資料庫本身中的表格空間內。 這個方法的優點,就是資料庫可利用保護所有其他表格資料類型的資料庫伺服器機制(如備份及回復機制和安全機制)來保護資料。

管理表格空間

空間管理是一項持續的作業。「文件儲存庫」表格的大小會有增減。您必須確定有充分的空間足以支援大型二進位檔案,以免岔斷進行中的處理程序。此外,還必須確定已充分利用該空間。

刪除檔案

當 WebSphere Product Center 刪除 BOLB 檔和對應參照時,資料庫引擎不會釋出所配置的空間,而會針對新檔案來重複使用空間。

因此,每一個檔案都儲存在記憶體區塊中,而且,當檔案刪除時,系統會像新檔案新增時那樣重複使用記憶體區塊。

BLOB 的選用性 GZIPing

如果要壓縮儲存在 BLOB 中的文件,請執行下列動作:

要編輯的檔案:common.properties

參數:gzip_blobs=true/false

  • 有效值為 true 和 false
  • 如果沒有設定,預設值是 false
  • 如果是 true,就會壓縮儲存在 BLOB 中的文件

磁碟重組

「文件儲存庫」中的檔案有多次的新增和刪除,所以記憶體區塊會分成許多片段。當您經常使用磁碟來建立、刪除及修改檔案,自然會發生片段化的情形。

在某種情況下,作業系統必須將檔案的某些部分儲存在非連續的叢集中。使用者完全看不到這項運作,不過,因為硬碟必須搜尋磁碟的各個部分以將其組合成單一檔案,所以這項運作會減緩資料存取速度。

如果要增進文件儲存庫的效能,最好是使用 compress=y 匯出 DBL 表格,然後匯入 DBL 表格。這會將所有檔案排放在一個連續的叢集中,因而增加匯入檔案的時間。

附註:需不需要定期重組,應視表格空間的配置而定。請定期監視磁碟速度,以判斷是否需要重組磁碟空間。

文件儲存庫常見問題

問題:刪除 BLOB 之後,WebSphere Product Center 的速度會繼續受到影響嗎?

不會。刪除列之後,就會改善「文件儲存庫」頁面速度緩慢的情況。

問題:仍處於配置狀態的空間會使匯出/匯入的速度變慢嗎?

會。修正此狀況的唯一方式就是利用 compress=y 匯出及匯入 DBL 表格。

第 5 章 備份和回復

所採用的特殊備份方法和軟體並非本文件的範圍;不過,還是要在這裡列出一些備份概念。

WebSphere Product Center 的備份分為兩個部分:備份用來安裝 WebSphere Product Center 的檔案系統目錄,以及備份資料庫。

WebSphere Product Center 備份

如果要備份 WebSphere Product Center,只需備份 common.properties 中定義的 $TOP 目錄即可。這些目錄中的檔案一定會有變更,所以建議您每天進行備份。建議您的備份排程能夠包含定期完整備份和每日漸進式備份。

資料庫備份

資料庫的備份方式完全不是本文件所涵蓋的範圍,因為可用的方法實在太多了:匯出、熱備份、冷備份、鏡映等等。不論選擇哪種方法,WebSphere Product Center 資料庫使用者的綱目(如 common.properties 中的定義1)都是必須備份的部分。

資料庫必須可供 WebSphere Product Center 執行,所以建議採用每日線上或「熱」備份的方式。 此外,也應定期進行匯出或離線備份。

請參閱「資料庫備份」一節,以取得有關資料庫備份的詳細資訊。

回復

回復可分為兩類:WebSphere Product Center 和支援檔案的回復,以及資料庫的回復。

如果要回復 WebSphere Product Center 和支援檔案,只需還原遺漏的檔案或目錄至其原始位置,然後啟動 WebSphere Product Center 即可。

如果要回復資料庫,請執行下列步驟:

第 6 章 WebSphere Product Center 日誌程式

WebSphere Product Center 提供可產生日誌之預先配置的檔案,這些檔案可用來排解 WebSphere Product Center 內的問題。本文件提供記載機制的概觀,並解說如何設定日誌檔。


WebSphere Product Center 服務日誌配置檔

下列檔案可控制整個 WebSphere Product Center 內的各種子系統。所產生日誌的位置定義於每一個檔案中。

附註:所有路徑都相對於 $TOP

/etc/logs/eventprocessor.log.xml

/etc/logs/scheduler.log.xml

/etc/logs/system.log.xml

/etc/logs/appsvr.log.xml

/etc/logs/workflowengine.log.xml


執行時期產生的日誌

您可檢視執行時期所產生的日誌中有沒有錯誤,這有助於疑難排解,以確認問題是否與 WebSphere Product Center 或內部支援基礎架構有關。

WebSphere Product Center 所產生的日誌檔儲存於 $TOP/logs/*.log 中。

配置日誌檔

可依所需來編輯 WebSphere Product Center 日誌檔的內容(也就是位置、大小上限、格式)。以下各節說明一些元素,這些元素可用來配置日誌並提供一份值清單,這些值是配置 WebSphere Product Center 日誌檔時可能使用的值。

變更位置

附註:只適用於「檔案」和「捲動」附加器

如果要變更所產生日誌檔的位置,請變更指定日誌配置檔的參數。

例如:

<param name="File"   value="${TOP}/logs/webserver_db.log " />

變更檔案大小

附註:只適用於捲動附加器

在日誌檔開始折返並從頂端依序清除輸出之前,可將日誌檔的大小設定為指定的儲存體大小。如果要控制檔案何時開始截斷,請變更日誌檔大小參數值。

例如:

<param name="maxFileSize" value="10MB" />

變更檔案備份選項

附註:只適用於捲動附加器

日誌程式可定義要保存指定的日誌檔備份的數量。達到最大值時,會丟掉最舊的檔案。

例如:

<param name="maxBackupIndex" value="2" />

變更轉換型樣

重新定義轉換型樣,就可變更日誌的佈置配置。

例如:

<param name="ConversionPattern" value=
"%d [%t] %-5p %c (%F:%L) %x- %m%n"/>

轉換型樣與 C 中 printf 函數的轉換型樣息息相關。轉換型樣由文字和格式控制表示式(稱為轉換指定元)組成。

附註:您可以在轉換型樣內隨意插入任何文字。


轉換指定元

每一個轉換指定元的開頭都是百分比符號 "%",其後再接選用性格式修飾元轉換字元。

%(格式修飾元)(轉換字元)

例如:

%-5p [%t]: %m%n

依預設,相關資訊就是現行輸出。不過,藉助於格式修飾元,就可變更欄位寬度下限、欄位寬度上限和對齊設定。

選用性格式修飾元必須放在百分比符號與轉換字元之間。以轉換指定元為例,
%-5p 表示記載事件的優先順序應向左對齊於五個字元的寬度。

第一個選用性格式修飾元是左對齊旗標,它只是一個減號 (-) 字元。接著是選用性欄位寬度下限修飾元。這是一個代表輸出字元數下限的十進位常數。如果資料項目需要較少的字元,就會在該項目的左或右邊填補,直到達到寬度下限。

預設值是填補左邊(向右對齊),不過,您可利用左對齊旗標來指定填補右邊。填補字元是空格。如果資料項目大於欄位寬度下限,欄位會擴充來配合資料。值絕不會被截斷。

您可利用欄位寬度上限修飾元來變更此行為,指定方式是句點後面再接十進位常數。如果資料項目比欄位上限長,就會從資料項目的開頭(而不是尾端)移除額外字元。

比方說,如果欄位寬度上限是八,而資料項目的長度是十個字元,就會去除資料項目的前兩個字元。

附註:這個行為與 C 的 printf 函數不符,C 是從尾端截斷。

以下各頁列出定義轉換指定元時所用的值。


格式修飾元

以下是種類轉換指定元的各種格式修飾元範例。

格式修飾元

向左對齊

最小值

寬度下限

寬度上限

備註

%20c

False

20

如果種類名稱長度少於 20 個字元,則在左邊填補空格。

%-20c

True

20

如果種類名稱長度少於 20 個字元,則在右邊填補空格。

%30c

不適用

30

如果種類名稱長度大於 30 個字元,則從開頭截斷。

%20.30c

False

20

30

如果種類名稱長度少於 20 個字元,則在左邊填補空格。不過,如果種類名稱長度大於 30 個字元,則從開頭截斷。

%-20.30c

True

20

30

如果種類名稱長度少於 20 個字元,則在右邊填補空格。不過,如果種類名稱長度大於 30 個字元,則從開頭截斷。


轉換字元

以下是可辨識轉換字元的清單:

轉換字元

效果

c

用來輸出記載事件的種類。種類轉換指定元後面可選擇性地接上精確度指定元,它是放在方括弧([ ])中的十進位常數。

如果有提供精確度指定元,就只會印出對應數量之種類名稱的最右邊元件。依預設,會完整列印種類名稱。

例如:就種類名稱 "a.b.c" 而言,型樣 %c{2} 會輸出 "b.c"。

d

用來輸出記載事件的日期。日期轉換指定元後面可接上日期格式指定元(含括於大括弧 ({}) 中)。

例如:%d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}。 如果未指定日期格式指定元,就採用 ISO8601 格式。

日期格式指定元可接受 SimpleDateFormat 的時間型樣字串所用相同語法。雖然屬於標準 JDK 的一部分,但是 SimpleDateFormat 的效能很差。

為了獲得更好的結果,建議採用 log4j 日期格式製作程式。 要分別指定 AbsoluteTimeDateFormat、DateTimeDateFormat 及 ISO8601DateFormat 時,您可利用 "ABSOLUTE"、"DATE" 及 "ISO8601" 其中一個字串來指定這些日期格式。例如:%d{ISO8601} 或 %d{ABSOLUTE}。

這些專用的日期格式製作程式的執行效果比 SimpleDateFormat 好很多。

m

用來輸出 WebSphere Product Center 所提供之關聯於記載事件的訊息。

n

輸出平台相依字行分隔字元(一或多個)。

此轉換字元實際提供的效能,與採用不可攜的字行分隔字元字串(如 "\n" 或 "\r\n")的效能一樣。因此,指定字行分隔字元是比較適當的方式。

p

用來輸出記載事件的優先順序。

r

用來輸出從啟動 WebSphere Product Center 到建立記載事件所經歷的時間(以毫秒計)。

t

用來輸出產生記載事件之執行緒的名稱。

x

用來輸出關聯於產生記載事件的執行緒之 NDC(巢狀診斷環境定義)。

%

序列 %% 會輸出單一百分比符號。


WebSphere Product Center 記載設定檔

下列範例示範 WebSphere Product Center 日誌檔的定義方式。粗體字項目可設定 WebSphere Product Center 日誌檔的配置。

<!-- basic ASYNC appender -->
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="DEFAULT"/>
</appender>

 

<!-- basic CONSOLE appender. This is the same as doing system.out-->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value=

"[%t] %-5p %c (%F:%L) %x- %m%n"/>
</layout>
</appender>

<!-- simple FILE appender. The file will be opened and if append is true  -->
<!--                       it will not be truncated                       -->
<appender name="DEFAULT" class="org.apache.log4j.FileAppender">
   <param name="File"   value="${TOP}/logs/tomcat_default.log " />
   <param name="Append" value="true" />           
   <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value=

"%d [%t] %-5p %c (%F:%L) %x- %m%n"/>
    </layout>       
</appender>

<!-- Rolling FILE appender. The file will be opened and if append is true  -->
<!--                        it will not be truncated                       -->
<!--                        maxFileSize: How big before you rotate         -->
<!--                        maxBackupIndex: How many backups do you keep?  -->
   <appender name="DB" class="org.apache.log4j.RollingFileAppender">
      <param name="File"   value="${TOP}/logs/tomcat_db.log " />
      <param name="Append" value="true" />           
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value=

"%d [%t] %-5p %c (%F:%L) %x- %m%n"/>
  </layout>       
</appender>

<!-- For the austin.db category, you want to have only a few logs kept hence -->
<!--  the rollingappender -->
<category name="austin.db" additivity=" false">
      <priority value="INFO" />
      <appender-ref ref="DB" />
</category>

<!-- ROOT CATEGORY -->
<!-- MUST ALWAYS BE LAST ENTRY AND HAVE AN APPENDER-->
<!-- If a logging event is not caught by any other logger it will be handled by this-->
<!-- rule. -->
<root>
      <priority value="error"/>
      <appender-ref ref="DEFAULT"/>
</root>

</log4j:configuration>

第 7 章:拼字檢查配置

WebSphere Product Center 的「拼字檢查」功能是採用 WinterTree 的協力廠商產品 "Sentry Spell Checking Engine" 所設計。 因此,WebSphere Product Center 未隨附任何「拼字檢查程式」功能, 必須購買 WinterTree Software 的 Spelling Service Engine 5.10 版,才能啟用拼字檢查功能。 

附註:若要在 WebSphere Product Center 中使用拼字檢查功能,Wintertree Sentry Spelling Checker Engine Java SDK 5.10 為必備軟體。

至於這個版本啟用的「拼字檢查程式」功能,使用者只能在「項目詳細資料」和「單一編輯內容編寫」畫面內執行拼字檢查。 未來版本將於「多重編輯」或「大量編輯」畫面中支援拼字檢查程式功能。

限制

拼字檢查功能


啟用拼字檢查程式

本文件說明 WebSphere Product Center 搭配 WinterTree Software 的 Spelling Service Engine 5.10 版在執行時期一起運作所需的配置設定。

需求

配置 WebSphere Product Center 來使用 WinterTree Spelling Engine 執行時期配置

若要配置 WebSphere Product Center 來使用 WinterTree Spelling Engine 執行時期配置,必須變更三個內容檔:

附註:變更所有內容檔之後,請重新啟動 WebSphere Product Center,讓「執行時期拼字檢查引擎配置」參數生效。

common.properties

位置: <WPC5.2_INSTALL_DIR>/etc/default/common.properties 檔案

值:編輯 common.properties 檔案,以增加下列內容值:

spell_check=true (啟用拼字檢查引擎) 
spell_check_vendor=wintertree(將拼字檢查引擎供應商設定為 WinterTree SSCE)
spell_check_vendor_class=common.plugins.wintertree.WinterTreePlugin(設定 Wintertree SSCE 的外掛程式)
 spell_license=<license_key> (在內容 <license_key> 中,輸入向 WinterTree 購買的 Spelling Engine 5.10 版軟體的授權碼值)

spellservice.properties

位置:<WPC5.2_INSTALL_DIR>/etc/default/plugins/wintertree/spellservice.properties 檔案

值:將 MainLexicon<n> 內容的每一個 <WINTERTREE_INSTALL_DIR>, 取代為 WinterTree Spelling Engine 軟體在系統上的安裝位置。這樣會配置拼字檢查引擎的辭典/字典和執行時期內容。

ccd.rc

位置:<WPC5.2_INSTALL_DIR>/setup/ccd.rc 檔案

建立符號鏈結,從 <WPC_INSTALL_DIR>/jars/ssce.jar 連結到已安裝在 <WINTERTREE_INSTALL_DIR>/runtime/lib 中的 WinterTree Jar 檔,名稱為 ssce.jar。在這個檔案中增加未註解的指令行,即可建立此符號鏈結,如下列範例所示。

例如:

- AddJar $JARDIR/ssce.jar

 

第 8 章:安全

LDAP 整合

LDAP (Lightweight Directory Access Protocol) 整合藉由在 WebSphere Product Center 中新增三項功能,改善 WebSphere Product Center 的安全基礎架構:


特性概觀

LDAP 整合能夠利用協力廠商 LDAP 系統來達到鑑別目的。 鑒於使用協力廠商 LDAP 功能來進行授權太過複雜,因此採用 WebSphere Product Center 5.2 內現有的授權基礎架構來授權 LDAP 使用者, 而鑑別方面就屬於 LDAP 的管理範圍。LDAP 使用者和角色進入 WPC 都是在執行時期授權,也是根據使用者/系統呼叫的 Script 作業而定。WebSphere Product Center 中的 LDAP 使用者是以 LDAP 旗標來作區分。

LDAP 與 WebSphere Product Center 的整合提供更好的安全授權基礎架構,能夠支援 1000 位以上臨時的使用者,這種使用者需要各種(內部和外部)角色的權限。 例如,Category Managers 屬於內部角色,Assistant Brand Manager 屬於外部角色。

在 WebSphere Product Center 5.2 中,LDAP 整合僅適用於搭配 IBM Tivoli Directory Server 5.2 版(支援 LDAP 第 3 版)。 不過,實作方式可以延伸來搭配下列 LDAP 伺服器:Sun Java System Directory Server 5.2、Weblogic 8.1 – Embedded LDAP Server 及 Novell® eDirectory™ 8.7.3。

附註:本版不支援「單一登入」功能。 預計在以後的版本中實作單一登入。

功能概觀

假設

如果使用者在一個階段作業中已通過鑑別,即使在這段期間變更使用者身分(例如,變更角色、密碼等), 該使用者的鑑別會持續有效,直到階段作業結束為止。

限制

這個版本尚未確認在 LDAP 項目搜尋中是否可以擷取特定語言環境的字串。 

移轉 5.2 以前版本的影響

因為加入 LDAP FLAG 來區分 LDAP 使用者和 Product Center 使用者,WPC USER ENTITY 的綱目已有所有變動。


整合 LDAP 與 WebSphere Product Center

本節說明整合 LDAP for IBM Tivoli Directory Server 5.2 版與 WebSphere Product Center 5.2 所需的作業。  假設已適當地安裝 IBM Tivoli Directory Server 5.2 版。LDAP 的配置需要先為 IBM Tivoli Directory Server 5.2 版的使用者和角色配置 LDAP 綱目。

若要整合 LDAP 與 WebSphere Product Center,請執行下列動作:

1. 尋找 LDAP 配置的配置檔套件

2. 配置 IBM Tivoli Directory Server 5.2 版使用者和角色的 LDAP 綱目

3. 編輯 LDAP 配置檔

4. 在 WebSphere Product Center 中啟用 LDAP 旗標

5. 重新啟動 WebSphere Product Center

1. 尋找 LDAP 配置的配置檔套件

    <WPC5.2_INSTALL_DIR>/etc/default/ldap_config.xml

2. 配置使用者和角色的 LDAP 綱目

建立新的領域

1. 從 IBM Tivoli Directory Server Web 管理工具中,使用功能表路徑領域和範本 > 新增領域,建立新的領域。

2. 完成所有必要欄位。 

3. 選取物件類別 domain 作為母項 DN。

例如:

相對 DN 母項 DN
cn=myrealm dc=wpcdomain.dc=isl.dc=com

建立新的使用者範本

1. 從 IBM Tivoli Directory Server Web 管理工具中,按一下領域和範本 > 新增使用者範本,建立新的使用者範本。 

2. 輸入以上建立的領域項目作為母項 DN。選取結構化物件類別 inetOrgPerson。 

3. 編輯「必要的」屬性標籤,納入下列所有必要屬性的清單:

4. 透過功能表路徑領域和範本 > 管理領域 > 編輯,建立這個「使用者範本」與以上建立之領域的關聯性。

例如:

母項 DN
dc=wpcdomain,dc=isl,dc=com
cn=mytemplate,dc=wpcdomain,dc=isl,dc=com


建立新的使用者

1. 從 IBM Tivoli Directory Server Web 管理工具中, 透過功能表路徑使用者和群組 > 新增使用者,建立新的使用者。

2. 選取以上建立的領域,來作為這個使用者的領域。 

3. 在「必要的」屬性標籤中輸入,納入以上提到的所有屬性。

建立新的群組

1. 從 IBM Tivoli Directory Server Web 管理工具中, 透過功能表路徑使用者和群組 > 新增群組,建立新的群組。

2. 選取先前建立的領域,來作為這個群組的領域。此群組的「物件類別」是 groupOfNames。 

3. 建立使用者與群組的關聯性。

3. 編輯 LDAP 配置檔

需要下列 LDAP 配置檔才能整合 LDAP 與 WebSphere Product Center:

<WPC5.2_INSTALL_DIR>/etc/default/ldap_config.xml

編輯執行時期 LDAP 鑑別所需的 ldap_config.xml 檔案,將括弧內的值取代為安裝 LDAP 的適當值。

<?xml version="1.0" encoding="UTF-8"?>
<LdapConfiguration>
    <connectionInfo>
        <connectionParam name = "java.naming.provider.url">(輸入 LDAP 伺服器 URL)</connectionParam>
        <connectionParam name = "java.naming.security.principal">(輸入用於登入 LDAP 伺服器的使用者名稱)</connectionParam>
        <connectionParam name = "java.naming.security.credentials">(輸入用於登入 LDAP 伺服器的密碼)</connectionParam>
        <connectionParam name = "java.naming.security.authentication">simple</connectionParam>
        <connectionParam name = "java.naming.referral">follow</connectionParam>
        <connectionParam name = "java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</connectionParam>
        <connectionParam name = "java.naming.ldap.version">3</connectionParam>
    </connectionInfo>

<RoleMapping>
    <Object name = "Role Class">groupOfNames</Object>
</RoleMapping>
<WPCUserCredentialMappings ParentDN="(輸入使用者物件的基本 DN)" ObjectClass="inetOrgPerson">

以目前的範例而言,基本 DN 是:cn=myrealm,dc=wpcdomain,dc=isl,dc=com

        <WPCUserParam name = "UserName">uid</WPCUserParam>
        <WPCUserParam name = "FirstName">cn</WPCUserParam> >
        <WPCUserParam name = "LastName">sn</WPCUserParam> >
        <WPCUserParam name = "Email">mail</WPCUserParam> >
        <WPCUserParam name = "Address">postalAddress</WPCUserParam> >
        <WPCUserParam name = "Phone">telephoneNumber </WPCUserParam> 
        <WPCUserParam name = "Fax"> TelexNumber</WPCUserParam> >
    </WPCUserCredentialMappings>
</LdapConfiguration>

4. 啟用 LDAP

從 WebSphere Product Center common.properties 檔案中,啟用 LDAP 旗標。

    例如,

    enable_ldap=true

5. 重新啟動系統

經過前述四個步驟完成 LDAP 配置之後,請重新啟動 WebSphere Product Center。

第 9 章:疑難排解

工具


應用程式伺服器問題

環境問題

應用程式伺服器上的 WebSphere Product Center 虛擬使用者必須先配置下列環境變數,再啟動 WebSphere Product Center:

此外,必須先取得 Shell Script init_ccd_vars.sh 來源,再啟動 WebSphere Product Center。這項作業通常都在使用者的 .bashrc 檔中完成。

取得 init_ccd_vars.sh 來源之後,就不應該修改 CLASSPATH 環境變數。

常見的不正確配置檔設定

最常見的錯誤是 common.properties 中不正確的資料庫指定元。配置不正確的資料庫會有下列症狀:

無法啟動 appsvr、eventprocessor、queuemanager、scheduler 及 workflowengine

日誌檔 logs/db_pool 和 logs/svc/ 中的錯誤

smtp_address。Smtp_address 應指向 SMTP 中繼站,不論是本端主機上的傳送郵件,或可將電子郵件傳送至組織外部的其他系統。

如果授權檔 (WPC_license.xml) 遺漏或不正確,就不會啟動服務。這項錯誤會反映在 logs/svc 下的日誌檔

應用程式伺服器無回應

實務

應用程式伺服器變得非常無回應能力。雖然還是可以連通測試 (ping) 伺服器,但使用者無法登入環境,且管理者無法登入應用程式伺服器

要尋找的項目:

檢查並查看使用者最近有沒有啟動非常大型的工作。如果該項工作是想要執行的工作,請檢查它所使用的 Script。


資料庫問題

1. 資料匯出/匯入期間的字元轉換

2. 資料庫空間配置問題

3. 資料區塊毀損和索引毀損問題

4. 匯入或匯出當掉,且狀態列有很長一段時間沒有變動

5. 刪除執行中的工作之後,應用程式變得相當緩慢

6. 重做日誌切換問題

7. WebSphere Product Center 中介軟體當掉且 GUI 凍結

8. 分析綱目工作當掉的情況

9. SQL 連線自動重新啟動


1. 資料匯出/匯入期間的字元轉換

問題

如果在資料庫匯出/匯入期間利用資料庫複本建立測試環境,就會出現所用字集的相關錯誤訊息。

症狀

比方說,如果匯出使用字集 US7ASCII 的資料庫,匯出日誌中就會出現下列錯誤訊息:

在 US7ASCII 字集和 UTF8 NCHAR 字集伺服器中完成的匯出作業,會採用 UTF8 字集(可能需要字集轉換)

解決方案

當您要匯出/匯入資料庫時,請將參數 NLS_LANG 設定成使用字集 american_america.utf8。

2. 資料庫空間配置問題

問題

有時候,匯入和匯出工作會因為配置給表格、索引、回復區段及暫時區段使用的空間不足而失敗。

症狀

如果回復區段或回復區段表格空間已滿,您就會在警示日誌檔中看到錯誤訊息,它與以下所示錯誤訊息類似:

ORA-1650:無法在表格空間 RBS 中延伸回復區段 RBS8 512 個位元組

無法延伸回復區段 9,因為出現 1650 狀況:回復區段 9 集的 FULL 狀態。

解決方案

3. 刪除正在執行的工作之後,WebSphere Product Center 速度變慢

問題

刪除工作時,就像匯入或匯出一樣,資料庫系統必須回復完整交易,才能讓資料庫保持一致狀態。此回復程序會使用最大的系統資源,如 CPU 時間和記憶體。

症狀

刪除正在執行的工作後,WebSphere Product Center 中介軟體變得緩慢。

解決方案

等回復作業完成後,系統就會回到正常狀態。非必要時,請不要刪除正在執行的工作。

4. 重做日誌切換問題

問題

如果日誌檔的數量/大小不適當,資料庫系統等待日誌切換的時間就會拉長。

症狀

如果所有重做日誌檔都在作用中,資料庫系統等待日誌切換的時間就會變得很久。

解決方案

5. WebSphere Product Center 中介軟體當掉且 GUI 凍結

問題

如果在存取 WebSphere Product Center 中介軟體時出現錯誤,表示資料庫連線可能已經遺失。

症狀

WebSphere Product Center 中介軟體凍結或處於經常等待的狀態。試圖存取 WebSphere Product Center 中介軟體時出現錯誤。

解決方案

6. 分析綱目工作當掉

問題

當您要將大量資料載入資料庫或要刪除/清除資料庫中的表格時,建議您每隔一段時間就分析一次綱目。

必須先停止 WebSphere Product Center 中介軟體,再執行綱目分析作業。如果未停止中介軟體,分析綱目工作可能會因為中介軟體正在使用表格而當掉。

症狀

執行分析綱目時,WebSphere Product Center 當掉了。

解決方案

如果分析綱目當掉,請刪除分析工作、停止 WebSphere Product Center 中介軟體、重新分析綱目,然後啟動 WebSphere Product Center。

定期分析綱目,以收集有關資料庫中資料分送的最新統計資料。


監視日誌檔中的錯誤

監視及檢視系統日誌檔有助於診斷及解決許多問題。

附註:文件的下一版本會延伸這一章的內容。 屆時會提供使用日誌檔和疑難排解技術的詳細資訊。


連線功能問題

HTTP 公佈錯誤

發生 http 公佈錯誤時,注意事項如下:

1.    可在 WebSphere Product Center 框中看到目標目的地嗎?

  • 利用 Linux/Unix http 瀏覽器(如 "Lynx")輸入 WebSphere Product Center 中介軟體的 URL,確認可否存取目標。
  • 如果 WebSphere Product Center 伺服器未提供瀏覽器,請利用 telnet 來嘗試目的地上的埠 80。比方說,如果目的地 URL 是 http://myserver/>urlname<, 請輸入 "telnet myserver 80"(埠 80 是大部分 Web 伺服器上的預設 http 埠)。

2.    如果可從 WebSphere Product Center 看到目的地,WebSphere Product Center 配銷商的運作正確嗎?

  • 檢查 $TOP/public_html/created_files/distributor 下方有沒有新檔案存在。 檢查並查看有沒有任何檔案有您嘗試使該檔案強行通過時所產生的近似時間戳記。
  • 可能有失控 Script 已產生毀損的輸出檔。請檢查檔案大小。檔案大小符合所預期的大小嗎?如果檔案是 XML 或其他可讀檔案,請將它輸出。它含有所預期的正確資訊嗎?

3.    如果檔案存在,是否正在進行轉送?

  • 您可利用不同工具查看是否正在進行實際的轉送。您至少必須採用 "netstat" 和 "snoop"(在 Solaris 下)或 "tcpdump"(在 Linux 下)的組合。
  • 管理您預期的項目。如果檔案大小是 300 MB,而且要透過網際網路將它公佈在 URL,則檔案只能以最高速度的網際網路連線進行傳送。

FTP 提取錯誤

如果 WebSphere Product Center 試圖登入目標 FTP 伺服器,但找不到指定目錄,這時會發生「無法變更遠端目錄」這項錯誤。

發生這項錯誤的原因有好幾個:

測試 Java 連線功能

JDBC URL 定義於檔案 common.properties 中。如果要測試從 WebSphere Product Center 中介軟體到 JDBC URL 的 Java 連線功能,請利用下列 Script 來測試 Java 連線功能。

$TOP/bin/test_java_db.sh

這個 Script 會嘗試連接至資料庫,然後執行簡單的 'select count(*) from dual'。建立連線後,就會出現 Script 的測試結果。


其他問題

停止和重新啟動 WebSphere Product Center

在 Linux/Solaris 下使用定期停止 Script 時會出現問題報告。很明顯地,WebSphere Product Center 無法適當或平順地停止。發生此狀況時,請利用下列步驟停止及啟動 WebSphere Product Center:

1. 執行下列 Script,以試圖依正常的步驟停止 WebSphere Product Center:

 $TOP/bin/go/stop_local.sh

2. 等待一分鐘左右,然後輸入下列指令:

ps –u(不含括弧的使用者名稱)

3. 如果有任何作用中的 Java 程序,已排定工作可能會繼續進行。必要時,請讓工作完成;或者,請利用下列 Script,以手動方式停止它:

$TOP/bin/go/abort_local.sh

4. 等待三十秒左右,然後輸入下列指令:

ps –u(不含括弧的使用者名稱)

5. 如果還是有作用中的 Java 程序,表示 JVM 很可能已經毀損。您必須利用下列指令,以手動方式刪除 java 程序:

kill `ps -u(不含括弧的使用者名稱)
| grep java | cut -b10-15`

附註:如果 Java 程序依舊存在,可能必須重新啟動系統。

6. 刪除所有 java 程序之後,請利用下列 Script 重新啟動 WebSphere Product Center:

$TOP/bin/go/start_local.sh

7. 等待一分鐘左右,然後驗證 WebSphere Product Center 已正確啟動。執行 $TOP/bin/go/rmi_status.sh 這個 Script,或登入 WebSphere Product Center 環境。

第 10 章 - 移轉組織架構 

移轉組織架構可供您從 WebSphere Product Center 4.2.0.x 版移轉至 5.2 版。以後將提供從 WebSphere Product Center 5.0 和 5.1 移轉至 5.2 的移轉組織架構。 因為 5.0 版和 5.2 版的核心變動很少,如有需要,可以手動執行移轉。 如需相關資訊,請洽詢 WebSphere Product Center 業務代表。

從 4.2.0.x 移轉至 5.2

4.2.0.x 提供 Shell Script,協助在 WebSphere Product Center 中匯出和匯入特定公司的所有物件:

匯出

匯入

為了順利完成,請將 4.2.0.x 版的所有 WPC 物件匯出為 zip 檔案, 如此同一個 zip 檔案可以匯入 5.2 來執行移轉活動。 

匯出公司

WPC 4.2.0.x 中的公司有兩種匯出方法。 

1. 使用 Shell Script 公用程式,名稱為:$TOP/bin/exportCompanyAsZip.sh

用法: 

exportCompanyAsZip --company_code=<code> --script_path=<path/to/trigo/script>
其中,

以下提供 Script 範例。

envObjList = new EnvObjectList();
envObjList.addAllObjectsToExport("CATALOG");
envObjList.addAllObjectsToExport("HIERARCHY_MAPS");
envObjList.addAllObjectsToExport("MAPS");
envObjList.addAllObjectsToExport("FEEDS");
envObjList.addAllObjectsToExport("LOOKUP_TABLE");
envObjList.addAllObjectsToExport("ATTRIBUTE_COLS");
envObjList.addAllObjectsToExport("CONTAINER_ACCESSPRV");
envObjList.addAllObjectsToExport("HIERARCHY");
envObjList.addAllObjectsToExport("COMPANY_ATTRIBUTES");
envObjList.addAllObjectsToExport("SPEC");
envObjList.addAllObjectsToExport("DATASOURCE");
envObjList.addAllObjectsToExport("USERS");
envObjList.addAllObjectsToExport("ACG");
envObjList.addAllObjectsToExport("ROLES");
envObjList.addAllObjectsToExport("CATALOG_CONTENT");
envObjList.addAllObjectsToExport("HIERARCHY_CONTENT");
envObjList.addAllObjectsToExport("LOOKUP_TABLE_CONTENT");
envObjList.addAllObjectsToExport("DOC_STORE");
envObjList.addAllObjectsToExport("MY_SETTINGS");
envObjList.addAllObjectsToExport("DISTRIBUTION");
envObjList.addAllObjectsToExport("DOC_STORE");

sDocFilePath = "archives/company.zip";
exportEnv(envObjList, sDocFilePath);

2. 使用以上提供的 Script,直接在啟用 WebSphere Product Center Script 功能的環境中執行(例如,在匯入工作、報告中,甚至是直接在「Script 沙盤推演」中執行)。

利用 $TOP/bin/exportCompany.sh Shell Script(此 Script 可以將物件匯出為 Shell Script), 也可以從 WPC 環境中將某些預先定義的 WPC 物件匯出為 Script, 如此,只要在其他環境中執行這些 Script,即可重建這些 WPC 物件。 但在移轉過程中,不會採用這種作法來匯出 WPC 物件, 因為這個公用程式無法匯出 WPC 物件內容(例如,階層中的項目資訊或種類資訊)。

匯入公司

有三種方法可以匯入公司。

1. 使用 Shell Script,$TOP/bin/importCompanyFromZip.sh

用法:importCompanyAsZip --company_code=<code> --zipfile_path=<path/to/import/archive>
其中,

company_code 是要匯入之公司的公司碼 
zipfile_path 是文件儲存庫裡包含公司的 zip 保存檔的位置。

2. 使用 WPC Script 作業 importEnv(String sDocFilePath)
其中,

sDocFilePath 是文件儲存庫裡包含公司的 zip 保存檔的位置。

利用 exportCompany.sh 的結果,也可以匯入 WPC 公司。 但在移轉過程中,不會採用這種作法來匯出 WPC 物件, 因為 exportCompany.sh 無法匯出 WPC 物件內容(例如,階層中的項目資訊或種類資訊)。

3. 使用應用程式 GUI 的「匯入環境」選項。

使用應用程式的 GUI 來匯入資料

對移轉的影響

下列 WPC 物件屬於 WPC 4.2.0.x 現有的匯入/匯出工具組織架構,所以不會匯出: 
選項

將更新 4.2.0.x 的匯出機能,到時也會支援匯出這些 WPC 物件。

在 WPC 5.2 中,除了提供先前版本即有的 RPC/Encoded 樣式, 也會支援 Document/Literal 形式的 SOAP 要求。 這個移轉活動還需要經過測試。 


從 4.2.1 移轉至 5.2

4.2.1 包含正式版本的「匯入/匯出工具」。 這項特性提供「匯入環境」的 GUI 功能, 可以透過 zip 檔案,將公司從相同 WebSphere Product Center 版本中匯出的資料, 匯入 WebSphere Product Center 內的其他公司。

XML 控制檔定義匯入次序。匯出期間會建立這個控制檔,並壓縮為 zip 檔案。  在 4.2.0.x 中,對客戶建議的移轉組織架構是利用 exportCompanyAsZip.sh 來匯出所有公司資料。 這個 Script 的 zip 輸出檔具相容性,可以在 5.2 中透過「匯入環境」或 importCompanyFromZip.sh 來匯入。

第 11 章 Web 服務支援

Web 服務定義語言 (WSDL) 支援 - 支援簡單要求訊息的 WSDL 1.2 和 SOAP 1.2 要求/回應。「協同作業管理員」功能 表包含在「Web 服務主控台」中設定服務的「Web 服務模組」。目前只支援 SOAP over HTTP 通訊協定。

定義

WebSphere Product Center 提供了一個可當作 API 層使用的 Scripting 層。這些 Script 可進一步顯示為 Web 服務。 系統會為需要在 WebSphere Product Center 中顯現的每一個商業功能,建立一個 Web 服務。也會建立對應的要求端應用程式 來與該 Web 服務進行互動。該 Web 服務會在 WebSphere Product Center 上執行一或多個 Script,並且搭配其他 Web 服務來提供所要的商業功能。

下圖顯示簡單要求訊息的 WSDL 1.2 和 SOAP 1.2 要求/回應之使用案例。

 

一般 WSDL 使用案例

Web 服務是使用「Web 服務主控台」來設定的。下列步驟使用一般 WSDL 使用案例。

1. Web 服務主控台 – 按一下「新建」並對下列欄位輸入必要的資訊: 

2. Web 服務定義檔

Web 服務定義檔上載自「Web 服務主控台」,其中含有 WSDL 1.2 格式的 Web 服務說明。Web 服務使用 SOAP 1.2 要求/回應編碼方式,WSDL 檔包含下列項目:

附註:Web 服務定義檔已發佈至預設 HTTP 伺服器,它是 WebSphere Product Center 的 HTTP 伺服器。這也是發佈 Web 服務定義 Script 的所在位置。系統透過「說明」按鈕來提供協助。

3. Web 服務實作 Script - Web 服務實作 Script 是由符合上述 Web 服務定義之送入的 SOAP 1.2 要求訊息呼叫。Web 服務實作 Script 會執行下列動作:

4. 要求端應用程式要求訊息 - 要求端應用程式的管理者會撰寫程序,以建立符合步驟 #2 所述之 Web 服務定義的 SOAP 1.2 訊息。

5. 要求端應用程式回應訊息 - 要求端應用程式的管理者會撰寫程序,以接收並處理符合步驟 #2 所述之 Web 服務定義的 SOAP 1.2 訊息。

執行時期事件

設定 Web 服務之後,會發生下列事件:

1. 使用者在要求端應用程式中執行程序,該程序從要求端應用程式觸發 SOAP 1.2 訊息,使它傳到 WebSphere Product Center HTTP 伺服器。

2. 要求訊息僅含 ID 屬性,如 GTIN 或 UPC、GLN 和 Target Market。

3. WebSphere Product Center 執行 Web 服務實作 Script 來剖析 SOAP 1.2 要求訊息、存取產品資訊、建立 SOAP 1.2 回應訊息,以及傳送回應訊息。

4.(選用)- 系統將要求訊息和回應訊息記載到「文件儲存庫」中。系統是以可在「訊息主控台」存取的方式,將鏈結記載到「文件儲存庫」中的訊息。

5. 要求端應用程式接收回應訊息。

6. 要求端應用程式處理回應訊息。

WebSphere Product Center 服務日誌配置檔

下列檔案可控制整個 WebSphere Product Center 內的各種子系統。所產生日誌的位置定義於每一個檔案中。

附註:所有路徑都相對於 $TOP

/etc/logs/eventprocessor.log.xml
/etc/logs/scheduler.log.xml
/etc/logs/system.log.xml
/etc/logs/appsvr.log.xml
/etc/logs/workflowengine.log.xml


Web 服務使用者介面

Web 服務主控台

Web 服務主控台提供使用者建立及管理 WebSphere Product Center 所顯現的 Web 服務。您可以撰寫 WSDL 文 件來定義服務,以及建立實作 Script 來控制服務的執行方式。

Web 服務主控台直欄

Web 服務主控台包含下列直欄:

存取 Web 服務主控台

若要存取 Web 服務主控台,請使用功能表路徑:

協同作業管理員 > Web 服務 > Web 服務主控台。

建立新的 Web 服務

若要建立新的 Web 服務,請使用功能表路徑: 

協同作業管理員 > Web 服務 > 新建 Web 服務

這時會出現「Web 服務詳細資料」畫面。請輸入必要的資訊來定義新的 Web 服務。 

「Web 服務詳細資料」畫面明細

本節定義「Web 服務詳細資料」畫面的每一個欄位。

附註:關於對 Web 服務的 Document-Literal 樣式支援所做的變更,請參閱下一節。

Web 服務名稱:請輸入 Web 服務的名稱。這個名稱會成為 SOAP 服務的 URL 的一部分。它不能包含任何空白字元。 

Web 服務說明:請輸入 Web 服務的說明。

通訊協定:Web 服務所用的通訊協定。目前只支援 SOAP over HTTP 通訊協定。預設值是 “SOAP_HTTP”。 

樣式:樣式可能是 "DOCUMENT_LITERAL" 或 "RPC_ENCODED"。實作 Document/Literal 服務的 WPC Script 將會傳遞整個要求內文,並且預期將會傳回整個回應內文。RPC/Encoded 服務 WPC Script 將會傳遞字串參數陣 列,並且預期傳回單一字串。RPC/Encoded 服務可能比較適用於簡式應用程式,而 Document/Literal 服務針對更複雜的服務提供更大的彈性。

URL:提供可用來存取服務的 URL。儲存 Web 服務之後,會自動移入這個欄位。 

WSDL URL:可用來存取 Web 服務之 WSDL 的 URL。儲存 Web 服務之後,會自動移入這個欄位。 

WSDL:請輸入這個服務的 WSDL。WSDL 文件是服務的介面、URL 和通訊協定的說明,其格式為 XML。您必須以手動方式 輸入此文件,不過我們在下面提供了範例 WSDL 文件。您必須輸入 Web 服務的有效 XML,才能順利儲存。 

實作 Script:請輸入實作這個服務的 WPC Script。以 RPC/Encoded 服務而言, 服務的送入參數是在陣列變數 "soapParams" 中提供,而且服務的傳回值必須是寫至 "out" 寫出器變數的字串。如果是 Document/Literal 服務,SOAP 要求內文會以字串變數 "soapMessage" 提供,而且回應內文必須寫至 "out" 寫出器變數。 不論哪一種樣式,請將錯誤碼寫至 "soapFaultCode" 寫出器變數,並將錯誤訊息寫至 "soapFaultMsg" 寫出器變數,以傳回 SOAP 錯誤。 以下提供實作 Script 的範例。 

儲存要求?:如果勾選這個項目,WPC 會將所有送入要求的參數儲存在文件儲存庫中。您可以從交易主控台中使用它們。  

儲存回覆?:如果勾選這個項目,WPC 會將所有回應的內容儲存在文件儲存庫中。您可以從交易主控台中使用它們。

部署:如果勾選這個項目,將會部署服務。否則將無法提供這項服務。

範例實作 Script 和 WSDL 文件

下列 Document/Literal Web 服務傳回給定的指示器代號的股票報價。這個有限制的範例僅傳回 "IBM" 指示器的 值;其他所有引數都會導致發生 soap 錯誤。

這個 Web 服務端點等同於具有下列簽章的 Java 方法:

java.math.BigDecimal getStockQuote(String ticker);

實作 Script

// parse the request document
var doc = new XmlDocument(message);

// get the ticker parameter
var ticker = parseXMLNode("ticker");

// we only give out ibm quotes around here...
if (ticker == "IBM") {
out.println("<ibm:getStockQuoteResponse 
xmlns:ibm=\"http://ibm.com/wpc/test/stockQuote\">");
out.println(" <ibm:response>123.45</ibm:response>");
out.println("</ibm:getStockQuoteResponse>");
}
else {
soap_fault_msg.print("Only quotes for IBM are supported");
}

WSDL

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:y="http://ibm.com/wpc/test/stockQuote" 
targetNamespace="http://ibm.com/wpc/test/stockQuote">
<types>
<xs:schema targetNamespace="http://ibm.com/wpc/test/stockQuote" 
elementFormDefault="qualified">
<xs:element name="getStockQuote">
<xs:complexType>
<xs:sequence>
<xs:element name="ticker" type="xs:string" nillable="false"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStockQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="getStockQuoteRequest">
<part name="parameters" element="y:getStockQuote"/>
</message>
<message name="getStockQuoteResponse">
<part name="parameters" element="y:getStockQuoteResponse"/>
</message>
<portType name="StockQuotePortType">
<operation name="getStockQuote">
<input message="y:getStockQuoteRequest"/>
<output message="y:getStockQuoteResponse"/>
</operation>
</portType>
<binding name="StockQuoteBinding" type="y:StockQuotePortType">
<soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getStockQuote">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<port name="StockQuotePort" binding="y:StockQuoteBinding">
<soap:address 
location="http://example.wpc.ibm.com/services/StockQuoteService"/>
</port>
</service>
</definitions>

管理交易

存取交易主控台

若要搜尋所有 Web 服務交易,請使用下列功能表路徑來檢視交易主控台: 

協同作業管理員 > Web 服務 > 交易主控台。

檢視 Web 服務交易

1. 在「交易主控台」中,從「Web 服務交易」表格檢視交易清單。

2. 按一下「回應」或「要求」直欄中的「檢視」按鈕。交易詳細資料會顯示在新的瀏覽器視窗中。

搜尋 Web 服務交易

1. 在「交易主控台」中,從「Web 服務交易搜尋」表格的「開始送達日期」和「結束送達日期」欄位中,選取一個日期範圍。

2. 按一下「搜尋」按鈕。所有交易結果會顯示在搜尋表格下方的「Web 服務交易」表格中。

Portal Server 整合

供應商入口網站整合對零售商所帶來的一些好處包括:

WebSphere Product Center 提供一個 Web 服務組織架構來與 WebSphere Portal Server 做適當整合,其包括下列特性:

Portal Server 的 Web 服務組織架構支援

為了整合 WebSphere Portal Server,Web 服務功能併入下列特性的支援: 

因此,Web 服務組織架構包括下列特性:

支援 Web 服務的 Script 作業 

下列 Script 作業清單支援 WebSphere Product Center 支援的 Web 服務,這些 Script 作業在「Script 沙盤推演」中有提供:

附註:如需每個 Script 作業的其他詳細資料(原型和說明),請參閱 WebSphere Product Center 中的「Script 沙盤推演」。

· createWebService
· deleteWebService
· getDesc
· isDeployed
· getLoginString
· getImplScriptPath
· getName
· getProtocol
· getStoreIncoming
· getStoreOutgoing
· getStyle
· getUrl
· getWebServiceByName
· getWsdlDocPath
· getWsdlUrl
· invokeSoapServer
· saveWebService
· setDeployed
· setDesc
· setImplScriptPath
· setName
· setProtocol
· setStoreIncoming
· setStoreOutgoing
· setStyle
· setWsdlDocPath

支援 Document/Literal 樣式

本節包含 WebSphere Product Center 中所支援 Document/Literal 樣式的 Web 服務之詳細資料。舊版中已有提供 RPC/Encoded 樣式的 Web 服務。 不過,RPC/Encoded Web 服務僅支援簡式字串類型。為了滿足支援複式類型之傳送和接收的需求,在 WebSphere Product Center 中加入了 Web 服務的 Document/Literal 樣式的支援。 

Document/Literal 樣式的 Web 服務如何在 WebSphere Product Center 中運作?

為了部署 Document/Literal 樣式的 Web 服務,使用者必須建立 Web 服務,其中包含定義服 務綱目的 WSDL,以及發現要求時呼叫的 Websphere Product Center 觸發 Script。當儲存 Web 服務時,使用者必須明確地選擇要部署它。 在部署時,Websphere Product Center 會為 Web 服務建立一個 URL,Web 服務可從中存取已部署的 WSDL。Web 服務的 URL 將採用下列格式:

http://<application-webserver>:<application-port-number>/services/<stored-webservice-name>

在 URL 尾端加入 "?wsdl" 字串會產生 Web 服務已儲存之 WSDL 的路徑。

Document/Literal Web 服務的要求會以 SOAP 封套封住,而 SOAP 訊息內文會包含整個要求文件。這個要求文件必須是正 確的 XML 格式,才能依現狀傳遞至 Websphere Product Center Web 服務處理常式。呼叫端建立此要求時應事先知道所呼叫的 Web 服務已儲 存的 WSDL 之綱目節點格式。

Websphere Product Center Web 服務處理機制會接收這個要求,並針對 Document/Literal 樣式要求的 WSDL 綱目來驗證其內容。如果該要求沒有遵循 WSDL 綱目,則會擲出 AxisFault。否則, Websphere Product Center 會從要求內文中排除名稱空間參照,並將修改過的要求傳遞至 部署時所儲存的 Websphere Product Center 觸發 Script。由於 Websphere Product Center Script 環境定義的限制,無法處理名稱空間型的 XML 文件,所以需要移除名稱空間。Websphere Product Center 觸發 Script 會取得要求內 容,並依 Script 作者的定義來使用它們。此 Script 必須將其結果輸出為送入要求的有效回應。因此,在傳回輸出之前,會針對 WSDL 來驗證該回應。

範例:

Document/Literal 綱目的外觀如下所示:

<element name="getStockQuote"/>
<complexType>
<sequence>
<element name="ticker" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getStockQuoteResponse"/>
<complexType>
<sequence>
<element name="response" type="xsd:decimal"/>
</sequence>
</complexType>
</element>

如果用戶端呼叫了 getStockQuote("IBM"),則流程如下所示:

1. Websphere Product Center 會從 Axis SOAP 堆疊接收一個 SOAP 要求。

2. Websphere Product Center 會針對上述綱目來驗證要求訊息。

3. Websphere Product Center 會從要求內文中除去所有名稱空間字首。在此個案中不需要這麼做,因為這個綱目定義了預設名稱空間中的所有項目。

4. Websphere Product Center 會呼叫 Web 服務觸發 Script。以下是輸入變數:

- operationName = "getStockQuote"
- message = 
"<getStockQuote>
<ticker>IBM</ticker>
</getStockQuote>"

5. 觸發 Script 會將回應寫入 "out" 寫出器:

- out = 
"<getStockQuoteResponse>
<response>83.76</response>
</getStockQuoteResponse>"

6. Websphere Product Center 會針對上述綱目來驗證回應

7. Websphere Product Center 會透過 Axis SOAP 堆疊將整個 SOAP 回應傳回給用戶端。

針對支援 Document/Literal 樣式所做的變更

下列清單是針對支援 Document/Literal 樣式所做的變更。

從舊版移轉會產生什麼影響?

根據使用的 WebSphere Product Center 版本,可能需要執行小幅的資料庫 (DB2/Oracle) 修改。若有任何移轉方面 的問題,請洽詢 WebSphere Product Center 業務代表。

關於 Document/Literal 樣式 Web 服務的有用鏈結

http://java.sun.com/developer/technicalArticles/xml/jaxrpcpatterns/

 http://searchwebservices.techtarget.com/ateQuestionNResponse/0,289625,sid26_cid494324_tax289201,00.html

已知限制

由於 DOM 版本的原因,WSDL 的綱目節點上必須定義名稱空間

由於 Websphere Product Center(由 Xerces 2.4.0 版提供)隨附的 XML 剖析實作方式所造成 的限制,名稱空間宣告必須在本端環境的 WSDL 綱目節點上定義。當部署 Document-Literal 樣式 Web 服務時,通常會收到這項通知。 例如,下列為有效的 WSDL,但 WebSphere Product Center 無法正確辨識它:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://ibm.com/wpc/test/stockQuote" targetNamespace="http://ibm.com/wpc/test/stockQuote">
<types>
<xs:schema targetNamespace="http://ibm.com/wpc/test/stockQuote" elementFormDefault="qualified">
<xs:element name="getStockQuote">
<xs:complexType>
<xs:sequence>
<xs:element name="ticker" type="xs:string" nillable="false"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStockQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="getStockQuoteRequest">
<part name="parameters" element="y:getStockQuote"/>
</message>
<message name="getStockQuoteResponse">
<part name="parameters" element="y:getStockQuoteResponse"/>
</message>
<portType name="StockQuotePortType">
<operation name="getStockQuote">
<input message="y:getStockQuoteRequest"/>
<output message="y:getStockQuoteResponse"/>
</operation>
</portType>
<binding name="StockQuoteBinding" type="y:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getStockQuote">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<port name="StockQuotePort" binding="y:StockQuoteBinding">
<soap:address location="http://localhost/axis/services/StockQuoteService"/>
</port>
</service>
</definitions>

此 WSDL 必須如下所示撰寫,才能被正確剖析:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://ibm.com/wpc/test/stockQuote" targetNamespace="http://ibm.com/wpc/test/stockQuote">
<types>
<xs:schema targetNamespace="http://ibm.com/wpc/test/stockQuote" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="getStockQuote">
<xs:complexType>
<xs:sequence>
<xs:element name="ticker" type="xs:string" nillable="false"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStockQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="getStockQuoteRequest">
<part name="parameters" element="y:getStockQuote"/>
</message>
<message name="getStockQuoteResponse">
<part name="parameters" element="y:getStockQuoteResponse"/>
</message>
<portType name="StockQuotePortType">
<operation name="getStockQuote">
<input message="y:getStockQuoteRequest"/>
<output message="y:getStockQuoteResponse"/>
</operation>
</portType>
<binding name="StockQuoteBinding" type="y:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getStockQuote">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<port name="StockQuotePort" binding="y:StockQuoteBinding">
<soap:address location="http://localhost/axis/services/StockQuoteService"/>
</port>
</service>
</definitions>

新建的 Web 服務不會自動部署 

個案 ID:P16473

問題:建立一個新的 Web 服務並重新啟動 WebSphere Product Center。當嘗試呼叫新建的 Web 服務時出現錯誤。

暫行解決方案:允許 "public_html/WEB-INF" 目錄下 Axis 配置檔 "server-config.wsdd" 的寫入權。 此外,對於使用 WebLogic 的環境,則必須以擴充的目錄格式部署 WebSphere Product Center 實例。如果沒有這麼做, 則在重新啟動時,Axis 的自動重新部署功能不會部署 WebSphere Product Center 所建立的 Web 服務,因此導致錯誤發生。

加強型 WSDL:無法變更樣式

個案 ID:P16059

使用 DOCUMENT-LITERAL 建立一個 Web 服務。儲存並回到新建的 Web 服務,然後將樣式變更為 RPC-ENCODED 並重新儲存。畫面上依然顯示 DOCUMENT-LITERAL 樣式。

這是一個已知限制。使用者無法變更已部署的 Web 服務樣式。

建立 Doc-Literal 類型的 Web 服務並呼叫該 Web 服務。

執行 document-literal 樣式的 Web 服務

1. 移至 common.properties。定義 "soap_company" 和 "soap_user" 的值。這會是送入的 SOAP 要 求用來存取資料庫及執行 Script 的公司和使用者。另外,定義 "wpc_web_url" 的值。 

例如: 

soap_company=acme
soap_user=Admin
wpc_web_url=http://myinstance.acme.com:1234/

2. 回到 WebSphere Product Center。移至 "協同作業管理員 -> Web 服務 -> 新 Web 服務"。輸入或選取以下提供的值。

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Dave Marquard (IBM) -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://ibm.com/wpc/test/stockQuote" targetNamespace="http://ibm.com/wpc/test/stockQuote">
<types>
<xs:schema targetNamespace="http://ibm.com/wpc/test/stockQuote" elementFormDefault="qualified">
<xs:element name="getStockQuote">
<xs:complexType>
<xs:sequence>
<xs:element name="ticker" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStockQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="response" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>

<message name="getStockQuoteRequest">
<part name="parameters" element="y:getStockQuote"/>
</message>

<message name="getStockQuoteResponse">
<part name="parameters" element="y:getStockQuoteResponse"/>
</message>

<portType name="StockQuotePortType">
<operation name="getStockQuote">
<input message="y:getStockQuoteRequest"/>
<output message="y:getStockQuoteResponse"/>
</operation>
</portType>

<binding name="StockQuoteBinding" type="y:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getStockQuote">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<port name="StockQuotePort" binding="y:StockQuoteBinding">
<soap:address location="http://localhost/axis/services/StockQuoteService"/>
</port>
</service>
</definitions>

// parse the request document
var doc = new XmlDocument(soapMessage);

// get the ticker parameter
var ticker = parseXMLNode("ibm:ticker");

// we only give out ibm quotes around here...
if (ticker == "IBM") {
out.println("<ibm:getStockQuoteResponse xmlns:ibm=\"http://ibm.com/wpc/test/stockQuote\">");
out.println("<ibm:response>123.45</ibm:response>");
out.println("</ibm:getStockQuoteResponse>");
}
else {
// do I need to print to soapFaultCode too?
soapFaultMsg.print("Only quotes for IBM are supported");
}

3. 勾選「儲存要求」,以便能夠從交易主控台檢視要求歷程

4. 勾選「儲存回應」,以便能夠從交易主控台檢視回應歷程

5. 勾選「部署」,以部署 Web 服務。除非勾選這個選項,否則您無法使用 Web 服務

6. 使用 com.ibm.ccd.soap.test.StockQuoteTest.java 呼叫 Web 服務

用法:$JAVA_RT com.ibm.ccd.soap.test.StockQuoteTest <URL> <NUM_CASE>
範例:$JAVA_RT com.ibm.ccd.soap.test.StockQuoteTest http://trillian:9099/services/DocumentWebServiceTest 0

<NUM_CASE> 可以是 0 到 5 的任何整數
0 可用來查詢 IBM 的股票報價。請參閱 StockQuoteTest.java,以取得詳細資料。

6. 回應為: 

已在 URL 'http://trillian:9099/services/TestingDocumentStyle14' 呼叫 SOAP 服務
要求為:'<ibm:getStockQuote xmlns:ibm="http://ibm.com/wpc/test/stockQuote">
<ibm:ticker>SNM</ibm:ticker>
</ibm:getStockQuote>'
SOAP 呼叫成功。
結果為:'<ibm:getStockQuoteResponse xmlns:ibm="http://ibm.com/wpc/test/stockQuote">
<ibm:response>123.45</ibm:response>
</ibm:getStockQuoteResponse>'

第 11 章 - 指令行工作呼叫

已實作 WebSphere Product Center 排程器的指令行介面,方便與外部排程器整合,必要時以自動化方式完成整合。 目前,此特性已由 IBM Tivoli Workload Scheduler 確認。此特性可讓使用者利用指令介面或 Tivoli Workload Scheduler 使用者介面觸發 WebSphere Product Center 匯入或匯出。 

限制:此特性僅支援「英文」語言環境。使用「美式英文」作為伺服器語言的安裝,可以使用此功能。 尚未完全支援其他所有語言,因為輸出主控台顯示的所有訊息皆為英文。 在以後的 Fix Pack 或 WebSphere Product Center 主要版本中,預計將支援其他所有 Group 1 語言環境。 

必備條件

有兩種方法可以執行 WebSphere Product Center 匯入和匯出工作。 第一種方法是使用指令介面,透過 WebSphere Product Center 排程器觸發工作,第二種方法是使用 Tivoli Workload Scheduler 使用者介面。 若要呼叫第二種方法,必須符合下列必備條件:

1. 在應用程式伺服器安裝 Tivoli Workload Scheduler 8.2、Tivoli Management Framework 4.1 及 Tivoli Management Framework Language Support 4.1。

2. 在要執行已排定工作的環境中,請確定 "$TOP/bin/" 資料夾包含 Shell Script "run_job_template.sh"。

3. 在用來協助執行或排定工作的桌上型電腦安裝 Tivoli Management Framework 4.1。

排程器和 IBM Tivoli Workload Scheduler 的整合  

WebSphere Product Center 的排程器和 IBM Tivoli Workload Scheduler 的整合是透過 WebSphere Product Center 安裝 $TOP/bin/run_job_template.sh 提供的 Shell Script 來達成。 在要執行已排定工作的環境中,必須存在此 Shell Script,且每一個工作需要自己的 Shell Script。 

例如, 

工作名稱

相關聯的 Shell Script

Feed 1  

  run_job_feed1.sh

Feed 2

  run_job_feed2.sh

DailyFeed3   run_job_dailyfeed3.sh

Modifying run_job_template.sh

根據執行每一項工作的每一個測試或正式作業環境,需要修改 run_job_template。

例如: 

開啟 run_job_feed1.sh,可以看到下列片段:

#export TOP=<Path to WPC Installation home directory> # E.g. /usr/appinstalls/wpc52
#WPC_INIT_VARS=$TOP/setup/init_ccd_vars.sh
#. $WPC_INIT_VARS

# Set the job related variables as needed and do not modify anything else after this
# CCD_JOB_NAME=<Job Name> # [Required]
# CCD_JOB_TYPE=<Job Type> # [Required, Valid values are import|export]
# CCD_COMPANY_CODE=<Company Code> # [Optional, Default Value is trigo] 
# CCD_USERNAME=<User Name> # [Optional, Default Value is Admin]
# CCD_DEBUG=<Debug on or off> # [Optional, Default Value is off]

附註:CCD_COMPANY_CODE 預設值為 "trigo", 此為我們執行 create_schema.sh 時建立的預設公司。

上述參數片段需要變更為:

export TOP=/usr/trigo/wpc52_41/bin
WPC_INIT_VARS=$TOP/setup/init_ccd_vars.sh
. $WPC_INIT_VARS

# Set the job related variables as needed and do not modify anything else after this
CCD_JOB_NAME=Feed1 # [Required]
CCD_JOB_TYPE=import # [Required, Valid values are import|export]
CCD_COMPANY_CODE=test # [Optional, Default Value is trigo] 
CCD_USERNAME=m # [Optional, Default Value is Admin]
CCD_DEBUG=on # [Optional, Default Value is off]

使用 Tivoli Workload Scheduler 執行工作

Tivoli Workload Scheduler 使用者介面可以用來觸發 WebSphere Product Center 匯入或匯出。 使用者介面利用 Shell Script 來定義要執行或排定的工作。 本節提供詳細的步驟,說明如何使用 IBM Tivoli Workload Scheduler 執行工作。

必須先建立作業來定義工作之後,才能使用 Tivoli Workload Scheduler 執行 WebSphere Product Center 工作。

建立作業

建立作業會定義用來執行已排定工作的主機,也會定義必要 Shell Script 檔案的路徑。

1. 開啟 Tivoli 桌面,在「Tivoli 管理環境」對話框,輸入伺服器的相關資訊, 包括運用合併排程器特性所需的必要應用程式: WebSphere Product Center 5.2、Tivoli Workload Scheduler 8.2、Tivoli Management Framework 4.1 及 Tivoli Management Framework Language Support 4.1。   完成時,按一下「確定」。

2. 按兩下安裝 Tivoli Workload Scheduler 的主機名稱。畫面上會出現「原則區」對話框。

3. 從功能表列選取「建立 > 作業庫」,將出現「建立作業庫」對話框。輸入新作業庫的名稱,按一下「建立 & 關閉」。

4. 按兩下作業庫建立作業。建立作業就像在 WebSphere Product Center 中建立工作一樣。

5. 從功能表列選取「建立 > 作業」,輸入作業的名稱。例如,"Task for Feed 1"。

6. 編輯作業時,選取需要執行作業的角色。

7. 選取要執行作業的平台。如果作業在 AIX 平台上執行,請勾選 AIX 選項,畫面上會出現「作業的 AIX 執行檔」。 輸入必要資訊,指定所需的 Shell Script "run_job_template" 所在的位置:

附註:對 run_job_template.sh 的變更不會自動反映在作業中。 在「編輯作業」畫面,取消勾選和勾選平台選項,並指定更新的 Shell Script 的路徑,反映最新的變更。 

如需變更 "run_job_template.sh" 的相關資訊,請參閱「修改 run_job_template.sh」。

8. 按一下「建立 & 關閉」按鈕,儲存對作業所做的編輯。

執行作業

在「作業庫」建立作業之後,即可手動或在排定的時間執行。 作業執行時,將使用已定義的主機和 "run_job_template.sh" Script 檔案來進行 WebSphere Product Center 匯入/匯出。

1. 從「作業庫」畫面,按兩下所需的作業。

2. 勾選「顯示在桌面」選項,查看執行細節和工作完成狀態。

3. 在「可用的作業端點」下方,選取適當的主機,以便顯示在「已選取的作業端點」之下。

4. 按一下「執行」,在「格式化輸出」畫面中檢查結果。  桌面會顯示工作執行詳細資料,可以按一下「儲存至檔案...」來儲存至檔案。

排定作業 

對於需要排定的 WebSphere Product Center 工作,必須先建立「作業」,才能排定工作。

建立作業 

1. 從 Tivoli 桌面,按一下主機,再按兩下所需的「作業庫」來建立工作。

2. 在「建立」功能表選項下方,選取「作業」並輸入作業名稱。 

3. 選取需要排定工作的「作業」。

4. 勾選「顯示在桌面」選項,查看執行細節和工作完成狀態。

5. 在「可用的作業端點」下方,選取所需的主機,以便顯示在「已選取的作業端點」之下。

6. 按一下「建立 & 關閉」。

執行作業

1. 移至「作業庫」頁面,保持開啟「桌面」。

2. 將工作 "Job for Feed 1" 拖曳至桌面的「排程器」。

3. 輸入工作標籤。 

這裡有幾個執行工作的選項,視使用者需求而定。 例如,工作可以排定為不固定執行,但使用者也可能想要定期執行工作。 因此,視需求而定,使用者可以在「新增排定的工作」頁面變更設定。

假設使用者想要將工作排定為執行三次,且間隔 1 小時(60分鐘)。在此情況下,必須確定現行時間顯示符合「時區」設定的確切伺服器時間。

4. 勾選「重複工作」並輸入 "3"。

5. 輸入 "60" 分鐘。

6. 如果使用者想要通知特定群組,請勾選「公佈 Tivoli 通知」, 按一下「可用的群組」,在「可用的通知群組」清單下方選取任何群組,按一下「設定」關閉視窗。

7. 勾選「在桌面上公佈狀態對話框」 

8. 如果使用者環境已設定電子郵件,請選擇指定通知的電子郵件 ID。 

9. 勾選「記載至檔案」並指定日誌檔路徑,必要的話,請指定主機名稱和檔案路徑。

10. 按一下排定工作時程表排定工作時程表 & 關閉

檢查工作狀態

透過 IBM Tivoli Workload Scheduler 的「注意事項」特性,可以檢視工作的狀態。如有需要,使用者也可以登入 WebSphere Product Center 來檢查工作狀態。

1. 在「桌面」頁面,按兩下「注意事項」。 

2. 選取任何指定的群組,按一下「開啟」。

透過指令行介面控制排程器

如有必要,使用者可以使用 WebSphere Product Center 排程器,透過指令行介面執行匯入或匯出。 對於控制已排定工作的伺服器,使用者必須擁有必要的存取專用權。

使用指令行介面執行匯入或匯出

若要觸發工作,請使用下列指令行:

$JAVA_RT com.ibm.ccd.scheduler.common.RunJob --job_name="aaaa" --job_type=import|export [--company_code=bbbb --username=cccc --debug=on / off]

例如:

$JAVA_RT com.ibm.ccd.scheduler.common.RunJob --job_name="Item Feed " --job_type=import --company_code=test --username=user1 --debug=on

這會從 "test" 這家公司觸發名為 "Item Feed" 的匯入工作。 

第 13 章 - 整合最佳作法

本章的目的是要彙總說明 WebSphere Product Center 實作方式中的整合最佳作法。採用這些最佳作法有助於獲得系統間的高品質和可靠的整合。為顧全整合的所有考量,本文件有詳盡的闡述,以逐一指出有關不同整合層面的最佳作法。

整合的重要元素:


定義和字首語

整合要素:我們可以利用下列要素來瞭解在 WebSphere Product Center 實作中發現的各種實作方式。本文件其他部分所要強調的重點是哪些最佳作法或準則適用於哪些實作要素或種類。

WebSphere Product Center 作為來源或目標系統

最明顯的要素是:WebSphere Product Center 是不是所要交換之資訊的來源系統或目的地系統。來源系統在整合上設有一些限制,以下是其中最重要的限制:(a) 執行差異聯合的能力,(b) 起始整合的能力,(c) 接收已傳輸資料之成功/失敗的通知及執行適當動作的能力,以及 (d) 支援的通訊協定和格式及 EAI 基礎架構支援。

控制系統

我們會把控制系統定義成一個可依據整合的內部觸發來執行動作的系統。例如:WebSphere Product Center 可依排定時程,將聯合作業當做工作來執行。另一個範例是 SAP 可因項目新增而觸發 WBI 配接器。WebSphere Product Center 是整合的來源系統或目標系統,其決定因素與哪一個系統是整合中的控制系統完全無關。可能的情況有好幾種。 涉及中介物(如 FTP 伺服器或 EAI 工具)時,來源系統和目標系統都可能是控制系統:以排定時程為基礎的舊式系統負責將檔案放在 FTP 伺服器上,以排定時程為基礎的 WebSphere Product Center 則負責挑選檔案。以下是 WebSphere Product Center 作為受管制的目的地系統(也就是它會等待外部因素來觸發資料匯入)的一個範例:IBM WBI 透過呼叫程式將訊息公佈在 WebSphere Product Center,而訊息內容則是來自 Transora(舉例而言)的項目更新。以下是 WebSphere Product Center 作為受管制的來源系統(也就是它會等待外部因素來觸發資料匯出)的一個範例:IBM WBI 定期輪詢 WebSphere Product Center 佇列,以查看是否有可供挑選的檔案。

通訊協定

在通訊協定、格式與訊息型對檔案型整合之間,WebSphere Product Center 實作團隊和客戶資源中有許多混洧的情況。因此,本文件的目標之一就是要確定我們已針對這些概念建立一個共同的命名法。通訊協定範例有「檔案轉送通訊協定 (FTP)」、「超文字轉送通訊協定 (HTTP)」、「簡式訊息轉送通訊協定 (SMTP),也就是電子郵件)、「Java 傳訊服務 (JMS)」及「IBM WebSphere 訊息佇列作業 (IBM WebSphere MQ)」。通訊協定可定義封套、資料編碼(如號碼)及預期回應之類的項目,但與所傳輸的內容無關。在所有整合中,我們都應該相當清楚所使用的通訊協定,因為至少一定會有一個。此外,整合的各個階段實際上可能會使用不同的通訊協定:SAP 中的 WBI 配接器可能透過 HTTP 將資料從 SAP 傳輸到「WBI 交互連線伺服器 (ICS)」,然後將資料交給 IBM MQ 佇列管理程式,以便將該資料傳輸至其他佇列管理程式,也就是指將 WebSphere Product Center 當做 MQ 用戶端而與其連接的佇列管理程式。

格式

資料的呈現格式與通訊協定無關。格式範例有「逗號區隔值 (CSV)」、定界管道、「延伸標記語言 (XML)」 ,或者只是一些預先定義的欄位和記錄結構(如「電子資料交換 (EDI)」訊息)。每一種格式都是透過位置/長度參數或透過標示來定義欄位。請務必特別留意特定格式可能需要用到的編碼。例如,實作時通常都會忘記下列事項:在 XML 中,應避免使用角括弧 ('<'、'>') 之類的字元,或者,在 CSV 中,內容實際上可以包含逗號。

資料大小

這個要素常與「訊息型」或「檔案型」通訊混淆,請務必弄清楚。「訊息型」整合通常都涉及較少的資料交換和內容,如下所示:

不過,並無明確的界線可區分訊息型整合與檔案型或批次整合,因此,請務必定義一組明確的要素,不要有混淆或重疊的情形。基於上述考量,資料整體大小這個要素應該比要將資料標示為「訊息型」或「批次」整合來得重要。

通訊類型

另一個需要考量的要素就是整合中所涉及的通訊類型。同步通訊可就特定動作的結果為使用者或系統提供直接的回饋。例如,利用 HTTP 進行通訊時,可在動作公佈之後為系統或使用者提供自動回饋。另一方面,非同步通訊則採用較多的「激發後即忘」策略。比方說,如果整合需要在 FTP 伺服器上放置檔案,然後由系統挑選該檔案,在此情況下,就不會針對放置其動作結果之檔案的系統提供自動回應。

頻率

除「資料大小」要素外,「頻率」要素也會擷取所需定期處理的資料總量。

整合執行緒

中介系統和基礎架構這個要素會擷取是否正在使用 EAI 基礎架構。此外,在與舊式系統整合時,有時也會寫入中介程式,以便將資料上載或擷取至舊式系統。請務必瞭解及記錄這些中介系統或程式,因為,它們往往就是整合鏈中最弱的鏈結。

尤其是在複雜的整合中,這類整合可能需要多個中繼站(例如:從 WebSphere Product Center 到 WBI 再到目的地系統)、 非標準方法(如直接更新資料庫)、多個通訊協定或其他通訊盤查(如透過防火牆進行通訊),請務必針對整合及早建立可運作的單一執行緒或完整路徑。這可確定問題,並讓其他相關人員(如網路管理者或 IBM WBI 工作團隊)有充分的時間可同時解決這些連線功能問題。

上列整合要素應該成為說明 WebSphere Product Center 實作方式中之整合的標準專有名詞。PS 團隊在分析/設計階段所提供的文件,應該明確而一致地使用這些要素。

字首語

字首語

定義

EAI

企業應用程式整合 (Enterprise Application Integration)

FTP

檔案轉送通訊協定 (File Transfer Protocol)

HTTP

超文字轉送通訊協定 (Hyper Text Transfer Protocol)

MQ

IBM 的訊息佇列作業中介軟體。通常稱為 IBM Websphere MQ,因為目前所有的連線功能解決方案都屬於 WebSphere 品牌。

ICS

IBM 的 WBI 交互連接伺服器

WBI

IBM 的 WebSphere 商業整合套件,IBM 提供的 EAI 套件。


設計原則

可重複使用

整合實作方法的整體基礎就是可重複使用。當 WebSphere Product Center 變大,而且有更多的用戶端實作完成時,我們必須具備下列能力:快速調整及解決與先前未整合的系統和已在先前實作中整合之系統的整合。如果要滿足這項需求,我們必須將整合的所有心思放在重複使用性,這樣,萬一我們需要針對其他用戶端來與相同系統整合,我們才能以最有效的方式完成這項整合作業。

可重複使用性可利用下列方式來達成:(a) 善用 EAI 工具,如 IBM WBI 及其通用商業物件模型,(b) 選擇與資料模型無關的格式,(c) 撰寫與資料模型無關,而且可在其他實作中重複使用的 WebSphere Product Center Script 程式庫(確認、輪詢等等)。

資訊分享

以通訊作為整合的方法

在概念上,不妨將整合當做一系列的事件,這些事件可由控制系統 WebSphere Product Center 與受管制的系統之間的通訊觸發。這些事件可透過系統之間、輪詢內容或檔案的自動化程序之間所傳遞的訊息來觸發,或透過任何其他基本通訊方法來觸發。例如,通訊可能包含所要進行之變更的類型(新增、更新、刪除)、唯一的通訊 ID(供追蹤/確認使用),以及 WebSphere Product Center 或完整系統內足以影響變更的相關內容。

可靠性測量

除傳遞系統之間的資訊以進行變更通訊外,應該也要有進行特定交易成功或失敗通訊的適當方法。這類訊息交換通訊可利用同步形式的通訊,以最直覺的方式來實作,並可讓整合的系統進行追蹤,以確認是否需要因另一端無法接收而重新傳送特定交易,藉此增進並確保整合的可靠性。

資訊格式

您可採用通用方式來設計這些通訊的特定格式,讓格式及其相關處理功能都可在不同實作中重新使用。

當您在考量系統之間的通訊所使用的一般格式時,請務必根據下列需求來留意格式的可使用性:

資訊處理

系統之間所傳送的資訊格式應該具備相當的通用性,這種想法雖然合理,不過,我們也要瞭解,預先定義的格式不一定適用於所有的實作方式,尤其是當我們要將整合視為 WebSphere Product Center 與整合的系統之間的直接鏈結時,更可能不適用。為了免於因資料模型之類的差異而需要在每次的實作方式中重新建立格式與 WebSphere Product Center 規格之間的格式和對映,建議採用 XML 格式與 WebSphere Product Center 規格之間的可重複使用對映功能。

使用 EAI 平台

執行這項作業的方式之一就是使用 EAI 平台(如 WBI 或 webMethods 套件),這類平台可讓我們建置可重複使用的連接器,這些連接器有許多功能,例如:可讓 WebSphere Product Center 透過單一且完全可重複使用的訊息格式(也就是單一 XML DTD)來進行通訊。這樣,萬一因實作方式的特定因素而造成差異時,就可由 WBI 轉換這些差異,而不需要重新建立 WebSphere Product Center 功能來處理資訊。既然不需要重新建立 WebSphere Product Center 功能,當然就可以在不同實作中使用相同功能。

其他選項

不過,另有一項因素需要考量:特定用戶端可能需要重複使用已經與跨企業之其他系統搭配使用的格式。這項因素會使 WebSphere Product Center 難以引入完全獨立的 DTD,這類 DTD 需要先轉換,企業中的其他系統才能瞭解它們,而不能讓 WebSphere Product Center 使用已存在的 DTD。 在這類情況下,我們應該利用可重複使用的功能,來進行 WebSphere Product Center 內的規格與 DTD 之間的轉換。

另有一種情況:即使 EAI 平台正在使用中,只要我們能瞭解 WebSphere Product Center 所管理的資訊至其進行資訊通訊所用內部 DTD 的對映,這種方式對特定用戶端就非常有用,所以也是一種比較理想的方式。

事件處理

在理想的狀況下,應由 WebSphere Product Center 內的自動化程序來處理事件。比方說,引入 WebSphere Product Center 版本的佇列作業功能可用來處理訊息的傳送作業(離埠佇列)和回應及送入訊息的接收作業(入埠佇列)。佇列處理 Script 則可用來處理訊息的實際處理程序,這其實等於實際執行由特定訊息觸發的事件。

不過,事件處理不必直接相關於 WebSphere Product Center 的特定功能或特定版本的 WebSphere Product Center。其他的事件處理方法可能包括 WebSphere Product Center 內負責輪詢 FTP 伺服器的已排定工作、負責檢查檔案之本端檔案系統的已排定工作(透過「文件儲存庫」)、讓呼叫程式型觸發 Script 根據所公佈的資訊來觸發事件,或其他方法。 方法的選擇最後取決於仔細考量特定整合的資料大小和頻率要素的需求。

變更追蹤

如果要實作系統之間的完整同步化,WebSphere Product Center 內必須有一個方法來追蹤內容和項目所做的變更,進而有效地標示哪些是需要與整合的系統進行通訊的內容和項目,而哪些是不需要的。比方說,如果 WebSphere Product Center(作為來源系統)內有某個項目被刪除, 我們可能需要具備兩種能力:不但要觸發傳送至目標系統的訊息來通知目標系統必須刪除相同的項目,還要追蹤該特定通訊的成敗,讓 WebSphere Product Center 得以察覺是否確實已從目標系統刪除該項目。

可重複使用的連接器

連接器儲存庫

隨著實作和夥伴關係的進展,我們必須逐漸建置可供各種系統使用的可重複使用的連接器之儲存庫。在可能的情況下,我們應該盡量重複使用這些連接器,使其成為處理項目時所用的相關功能, 這樣,從特定實作的觀點來看,才能在稍作修改或完全不修改的情況下重複使用通過這些的連接器的流程。這種作法當然會大幅加快實作的整體執行時間,此外,當發現問題且問題的解決時間過長時,這種作法也可提升連接器及使用這些連接器的實作之可靠性和穩定性。

要與尚未定義連接器的系統整合時,應請善於整合的人共同參與,以快速建置可重複使用的連接器,這樣,就可使用這些連接器來進行特定實作中的整合,並可將其儲存在連接器儲存庫中備用,以應付我們需要與另一實作中的系統整合的情況。

連接器的用法

連接器的使用時機如下:必須透過 EAI 層完成所需完成的任何修改,並由該 EAI 層負責處理系統之間所傳送資訊的轉換。換句話說,在重新撰寫 WebSphere Product Center 內可重複使用的任何功能來處理透過 EAI 傳送的資訊之前,我們應該善用 EAI 平台的功能來執行任何必要的轉換,才不必重新撰寫任何 WebSphere Product Center 內的功能。


實作

調整實作

小型整合

整體整合的大型作業應該分成較小、較易管理的作業。有許多方法可讓完成這項作業,例如:將單一完整的整合細分成較小的整合 – 從每一項目類型(規格)的「分離」整合到每一儲存器(型錄)的整合,然後一直到一組屬性的整合(如果需要的話)。確認這些「小型整合」每個都能運作無誤後, 就可將它們組成一個單一、完整的整合。

功能的精度

請特別留意系統之間可能存在的整合層次。例如,將變更傳送至目標系統時,您可能希望可以執行下列作業:傳送某特定日期後的所有變更、只傳送最後變更被傳送後某特定型錄的變更、只傳送已發生在某特定項目群組上的變更,或傳送已發生在所有項目中某特定屬性上的任何變更。特定需求應獨立實作,不過,請務必在實作的設計程序初期時就將所需精度納入考量,才能適當地滿足該需求。

效能調整

一般效能註解

請勿將效能問題當作事後的問題。雖然在整合過程的後半段比較容易變更及修正整合的格式或其他部分,但是效能瓶頸需要很重要的重新設計程序,有時甚至需要工程支援。請在適當的開發過程中,將效能測量追蹤點放入 Script 中。

測量效能

如果採用小型整合方法(有關詳細資料,如「實作」一節所示),應於整合的每一步驟測量效能,測量方式就是算出每一項小型整合作業所需的總時間。這樣就可確定近似精準層次之效能可能不佳的區域,而且比較容易找出目標來改善效能。

改善效能

確定有效能問題的區域後,請執行詳細的分析,以判斷作業速度緩慢的主要原因。您可利用 WebSphere Product Center 的中介軟體側寫和工作詳細資料畫面上的效能標籤之類的工具來執行詳細分析。 做好分析後,就可利用它將其放在 Script 或 SQL 查詢的特定區域,然後執行適當的動作 - 修改或重新撰寫 Script,或藉由「工程」來加強資料庫查詢。

驗證

穩定性

小型整合的優點

實作小型整合(有關詳細資料,如「實作」一節所示)可提供一份清單,詳細列出已顯示整合可正常運作的所有區域,進而提高確認整合已成功的層次。如果沒有小型整合的可見性, 不但更難以提供整合可正常運作的詳細資料證明,整體的整合也比較可能遇到難以識別、診斷及除錯的問題。因此,實作小型整合可加強整合的整體穩定性。

可調整的測試

小型整合的優點

小型整合(有關詳細資料,如「實作」一節所示)可讓整合進行更細緻之細節層次的測試, 因此,所產生的錯誤或問題不會因大量(可能不相干)的複雜性而無法確定。所以,如上所述, 這個方法可大幅加速診斷、除錯及解決所發現的問題之程序。

代表性環境與完整環境

在代表性環境上執行整合測試時,應採用與最終環境相同的配置(相同的規格、驗證規則、值規則、視圖),但應盡量少用代表性實體(語言環境、型錄、種類樹、項目、種類、組織、使用者、角色)。這可減少執行測試的時間、載入畫面的時間,而且,一般而言,這種方式還可加快測試所需的時間與完全移入之環境中的測試時間。所有的測試及除錯都應在這種環境中完成。

在代表性環境中完成測試且每項作業似乎都可運作之後,才應該在完整且完全移入的環境中驗證整合。不過,仍應執行這個步驟,以確定代表性環境中沒有不慎忽略的邊緣實務並測試生產層次的整合效能。

可調整程序測試

任何可排程工作(也就是匯入、匯出)都應該先以非常少量的代表性項目(10 個或更少)來執行。 這個數量應隨著實際處理這些項目的 Script 中所取得之確信層次的比例而增加。 這種方式可確保不會發生下列情況:也就是大型工作執行數小時後,執行該工作的人最後卻發現,某個部分已經出錯但竟然未在開始執行的前幾分鐘內就致使整個程序立即失敗。

只有在完全確信關聯於工作的 Script 之作業後,才能利用一組完整的資料來執行工作。如完整環境建議所示,仍應執行這個步驟,以確定所執行的較小工作中沒有不慎忽略的邊緣實務並測試生產層次的工作效能。

可見性

報告

小型整合的優點

實作小型整合(有關詳細資料,如「實作」一節所示)時,因為有較小且可較快實作的整合片段,所以可產生較詳細的報告層次。相較於整體整合層次的實作進度報告,這個較細微層次的報告可產生比較具體和量化的實作追蹤。

它會列出小型整合並在圖表中詳細呈現小型整合與較大圖片之完整整合的關係,進而從小型整合作業進度報告輕易繪出整體實作進度的精確圖片。

擁有權

即使是和多個團隊一起工作,一樣要指派擁有權給跨整合的單一人員。這個人員的工作就是要確定下列事項:及早建立單一執行緒、團隊根據本文件中的準則運作,以及利用以下各項來漸進式建置/測試週期 - (a) 小型整合,(b) 可調整程序測試,以及 (c) 跨團隊同步化的代表性環境與完整環境。

文件

明確確定格式和方式

在執行和文件的明確路徑中清楚決定多個團隊進行整合運作時所使用的任何格式。 以下是最常見的範例:WebSphere Product Center 團隊負責從 WebSphere Product Center 匯出資料,而客戶或 SI 團隊負責將資料上載至目的地系統中。 未有共用格式規格之前,請勿開始進行,並且使此文件每日保持更新。這是專案管理者必須強制執行的絕對要求。

這種方式與使用代表性環境及執行小型整合並非不一致。這兩個團隊都應該漸進式建置及測試,以確保穩定、顯見的進度。


WebSphere Product Center 整合最重要的十項準則

使用明確、常用的專有名詞來說明整合

所有實作都應該採用「整合要素」一節所列出的要素。

可重複使用

調整的重點在於學習先前的整合,並遵守「可重複使用」一節所述的可重複使用原則來套裝整合。

可見性

建立報告進度的整體度量,而且,至少每隔幾天就要向專案管理者提供明確的狀態更新。

小型整合

根據攸關於大型整合的各種要素(型錄、屬性)來審視該整合的雜複性。 一次只注意一個小型整合,並直接關聯於可見性度量。

代表性環境與完整環境

維持一個易於除錯及測試的代表性環境。只有在確信 Script 和規格的有效性之後,才可移至完整環境。請將這項考量關聯於可見性度量。

可調整程序測試

先利用小型資料集測試所有工作來檢查正確性,再將其轉出至完整資料集。請將這項考量關聯於可見性度量。

效能

為免於擔心邏輯或格式化的正確性,請在開發週期中及早執行部分效能測試,然後定期確定問題。

及早建立單一執行緒

尤其在需要多個中繼站、多個通訊協定或非標準方法的複式整合中,更需要及早建立可運作的整合單一執行緒。

設計規格和文件

定義及記錄執行的明確路徑,並明確記錄會用到的任何格式,尤其有多個團隊進行整合運作時更需要這麼做。

單一擁有者

即使是和多個團隊一起工作,一樣要指派擁有權給跨整合的單一人員。


EAI 平台整合

方式

一般通訊格式

應盡量從前一個專案設計或重複使用通用通訊格式。格式的通用性愈高,就有愈多系統可在不必重新建立格式來讓所有系統互相通訊的情況下參與整合。當然,格式的通用性愈高,就愈可能犧牲效能,因此,對某一專案而言是適當的格式,對其他專案而言不見得就是最理想的選擇。不過,判斷所要採用的特定格式時,仍應將「整合要素」納入考量。

內容對映

WebSphere Product Center 內的內容模型與透過通訊格式所看到的模型之間的對映,應盡量透過可動態更新的方法來完成。再次強調,根據「整合要素」的探討,某些專案需求可能會規定建立這些對映時不能完全採用可動態更新的方法 - 例如:因為處理程序的絕對通訊量上限設有最高優先順序。這項作業的其中一個執行方式,必須搭配相關於種類樹的單一節點規格來使用種類樹(例如:代表 XML 結構),這些種類樹可指出種類樹特定節點在 WebSphere Product Center 內的內容模型中所對映的屬性規格節點路徑。您可利用遞迴處理程序 Script,根據此種類樹及其定義的對映來處理放入 XML 檔中的項目之對映,並可輕易滿足巢狀多重出現次數的需求。


其他優點

資訊翻譯/轉換

參與整合的系統,其本身不必處理整合中其他系統的資訊或內容限制和需求。您隨時都可利用 EAI 平台來處理這項內容翻譯/轉換。比方說, 雖然 WebSphere Product Center 將 FLAG 的值儲存為 "TRUE" 或 "FALSE",但我們要與其整合的系統可能會將該值儲存為 "Y" 或 "N"。EAI 平台可用來執行這些轉換, 以便讓 WebSphere Product Center 一律傳送 TRUE/FALSE 並假設它會被傳送為 TRUE/FALSE, 但整合的系統可一律傳送 Y/N 並假設會被傳送為 Y/N。這可確定如果有更多系統參與整合,絕對不會因為這些額外系統而需要重新編碼。

用戶端的理解

因為我們可以重複使用某用戶端可能已經熟悉的平台,所以該用戶端得以更加確信整合會利用已知功能 – 也就是 EAI 平台。 此外,如果用戶端專屬通訊格式已經存在,且由 WebSphere Product Center 整合重複使用,用戶端開發人員幾乎不需要任何額外訓練,就能瞭解 WebSphere Product Center 所要對映的通訊格式。

通訊彈性和可靠性

大部分 EAI 平台都有原生的功能,此功能允許透過各種通訊協定來進行通訊,並可確保由分配管理系統來遞送通訊。這可讓 WebSphere Product Center 只把焦點放在產生必要文件來進行通訊,而不必擔心可能支援不同的方法來向各種系統進行此文件通訊,也不必擔心追蹤每一個系統是否都已收到文件 - 這些事項都可交由 EAI 層和平台來負責,WebSphere Product Center 只需從整體整合執行緒的觀點來留意這些事項。


注意事項

在所有國家中,IBM 不見得有提供本件中所提及的各項產品、服務或功能。 請洽詢當地的 IBM 業務代表,以取得當地目前提供的產品和服務之相關資訊。這份文件在提及 IBM 的產品、程式或服務時,不表示或暗示只能使用 IBM 的產品、程式或服務。 只要未侵犯 IBM 的智慧財產權,任何功能相當的產品、程式或服務都可以取代 IBM 的產品、程式或服務。 不過,任何非 IBM 的產品、程式或服務,使用者必須自行負責作業的評估和驗證責任。

這份文件所說明的主題內容,IBM 可能擁有其專利或專利申請案。 提供這份文件不代表提供這些專利的授權。您可以書面提出授權查詢,來函請寄到:

IBM Director of Licensing

IBM Corporation

North Castle Drive

Armonk, NY 10504-1785

U.S.A.

下列段落若與該國之法律條款抵觸,即視為不適用:

INTERNATIONAL BUSINESS MACHINES CORPORATION 係以「現狀」提供,而不提供任何明示或默示之保證,其中包括且不限於可商用性或符合特定用途之保證。有些地區在特定交易上,不允許排除明示或暗示的保證,因此,這項聲明不一定適合您。

這項資訊中可能會有技術上或排版印刷上的訛誤。 因此,IBM 會定期修訂;並將修訂後的內容納入新版中。IBM 隨時會改進和/或變更本出版品所提及的產品和/或程式,不另行通知。

這份資訊中所提及的任何非 IBM 網站只供參考,IBM 不為這些網站提供保證。 這些網站所提供的素材不是 IBM 本產品的素材內容,如果要使用這些網站的素材,您必須自行承擔風險。

IBM 得以各種適當的方式使用或散佈由您提供的任何資訊,無需對您負責。

如果本程式的獲授權人為了 (i) 在個別建立的程式和其他程式(包括本程式)之間交換資訊, 以及 (ii) 相互使用所交換的資訊,因而需要相關的資訊,請洽詢:

IBM Burlingame Laboratory

Director IBM Burlingame Laboratory

577 Airport Blvd., Suite 800

Burlingame, CA 94010

U.S.A

這些資訊可依適當條款而取得,在某些情況下必須付費方得使用。

IBM 基於雙方之 IBM 國際程式授權合約(或任何同等合約)條款, 提供本文件所提及的授權程式與其所有適用的授權資料。

此處所包含的任何效能資料都是在受控制的環境下取得。因此,在其他作業環境下取得的結果可能大不相同。 某些測量是在開發層次系統下進行的, 因此不保證這些測量在一般可用系統上依然相同。再者,有些測量可能是經由推斷來預估。實際結果可能不同。本文件的使用者應驗證其特定環境所適用的資料。

本書所提及之非 IBM 產品資訊,取自產品的供應商,或其發佈的聲明或其他 公開管道。 IBM 並未測試過這些產品,也無法確認這些非 IBM 產品的執行效能、 相容性或任何對產品的其他主張是否完全無誤。 有關非 IBM 產品的性能問題應直接洽詢該產品供應商。

這份資訊含有日常商業運作所用的資料和報告範例。 為了要使它們儘可能完整,範例可能包括個人、公司、品牌和產品的名稱。 所有這些名稱都是虛構的,如有任何類似實際企業所用的名稱及地址之處,純屬巧合。

所有關於 IBM 未來動向或意圖的聲明都可能會隨時改變或撤銷,而不另行通知,它們僅代表 IBM 的目標與方針而已。

程式設計介面資訊

程式設計介面資訊之目的,是要協助您利用這個程式來建立應用軟體。

通用程式設計介面可讓您撰寫應用軟體,以取得本程式工具的服務。

不過,這份資訊也可能包含診斷、修正和調整資訊。提供診斷、修正和調整資訊,是要協助您進行應用軟體的除錯。

警告:請勿將這份診斷、修正和調整資訊當作程式設計介面使用,因為它隨時會改變。

商標和服務標記

下列詞彙是 International Business Machines Corporation 在美國和/或其他國家或地區的商標或註冊商標:

IBM
IBM 標誌
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere

Microsoft、Windows、Windows NT 和 Windows 標誌是 Microsoft Corporation 在美國和/或其他國家或地區的商標或註冊商標。

MMX、Pentium 和 ProShare 是 Intel Corporation 在美國和/或其他國家或地區的商標或註冊商標。

Java 和所有以 Java 為基礎的商標是 Sun Microsystems, Inc. 在美國和/或其他國家或地區的商標或註冊商標。

其他公司、產品和服務名稱,可能是其他公司的商標或服務標誌。


IBM WebSphere Product Center 包含適用於下列附加條款的「排除元件」(依照 
相關的授權資訊 
文件所定義)。本軟體是依照國際程式授權合約的條款, 
遵循其「排除元件」規定 
而授權給 貴客戶。IBM 必須向 貴客戶提供 
與本軟體相關的下列注意事項:

i.) IBM WebSphere Product Center 包括 IBM 依照 Apache 2.0 授權合約條款, 
自 Apache Software Foundation 獲得授權的 
下列軟體:

- Apache Regular Expression v1.2
- Apache Axis v1.1
- Apache XML4J v3.0.1
- Apache Log4j v1.1.1
- Apache Jakarta Commons DBCP Package v1.1
- Apache Jakarta Commons Pool Package v1.1
- Apache Jakarta Commons Collections Package v3.0

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement You may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of Your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to Your work.

To apply the Apache License to Your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with Your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
You may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

ii.) IBM WebSphere Product Center 包括 IBM 依照 Apache 2.0 授權合約條款, 
自 Scott Hudson、Frank Flannery 和 C. Scott Ananian 獲得授權的 
下列軟體:

- Cup Parser Generator v0.10k

CUP Parser Generator Copyright Notice, License, and Disclaimer
Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian 
Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, provided that 
the above copyright notice appear in all copies and that both the copyright 
notice and this permission notice and warranty disclaimer appear in supporting 
documentation, and that the names of the authors or their employers not be 
used in advertising or publicity pertaining to distribution of the software 
without specific, written prior permission. The authors and their employers 
disclaim all warranties with regard to this software, including all implied 
warranties of merchantability and fitness. In no event shall the authors or 
their employers be liable for any special, indirect or consequential damages 
or any damages whatsoever resulting from loss of use, data or profits, whether 
in an action of contract, negligence or other tortious action, arising out of 
or in connection with the use or performance of this software. 

iii.) IBM WebSphere Product Center 包括 IBM 依照 Apache 2.0 授權合約條款, 
自 Elliot Joel Berk 和 C. Scott Ananian 獲得授權的 
下列軟體:

- JLex v1.2.6

JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian 
Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, provided that 
the above copyright notice appear in all copies and that both the copyright 
notice and this permission notice and warranty disclaimer appear in supporting 
documentation, and that the name of the authors or their employers not be used 
in advertising or publicity pertaining to distribution of the software without 
specific, written prior permission. The authors and their employers disclaim 
all warranties with regard to this software, including all implied warranties 
of merchantability and fitness. In no event shall the authors or their 
employers be liable for any special, indirect or consequential damages or any 
damages whatsoever resulting from loss of use, data or profits, whether in an 
action of contract, negligence or other tortious action, arising out of or in 
connection with the use or performance of this software. Java is a trademark 
of Sun Microsystems, Inc. References to the Java programming language in 
relation to JLex are not meant to imply that Sun endorses this product. 

iv.) IBM WebSphere Product Center 包括 IBM 依照 Apache 2.0 授權合約條款, 
自 International Business Machines Corporation 和其他公司 
獲得授權的下列軟體:

- ICU4J v2.8

ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1995-2003 International Business Machines Corporation and others
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, provided that the above
copyright notice(s) and this permission notice appear in all copies of
the Software and that both the above copyright notice(s) and this
permission notice appear in supporting documentation.

本軟體僅「依現狀」提供,不提供任何
明示或暗示的保證,包括但不限於可售性、
特定用途的合適性及協力廠商權利的未涉侵權性
保證。不論在何種情況之下,包括契約
責任、過失責任或其他侵權行為責任,著作權
持有人或本聲明所包含的著作權人均不為使用
或執行本軟體時所產生或相關之任何索賠,
或任何間接或衍生之損害,或任何為了無法
使用、資料毀損或所失利益而負責。

除非本聲明有所規定,否則,在未取得著作權人
書面授權之前,不得利用著作權人姓名做廣告,
或以其他方式對本軟體之銷售、使用或其他商業往
來做促銷。


此處所指之所有商標和註冊商標均分別為 
其擁有者的資產。