本節提供關於在安裝 Identity Applications 後更新 WebSphere 環境的資訊。
本節概述了設定 WebSphere 叢集以用於 Identity Applications 的程序。本節假設您有 WebSphere Application Server (WAS) 方面的經驗。
(視情況而定) 若要對 RBPM 使用工作階段容錯移轉,請完成以下步驟:
在 IBM Admin Console 中,導覽至 Application servers > clustermember1 > Session management > Distributed environment settings > Tuning parameters > Custom tuning parameters (應用程式伺服器 > 叢集成員 1 > 工作階段管理 > 分散式環境設定 > 調整參數 > 自定調整參數)。
指定 All session attributes (所有工作階段屬性) 模式,如此可控制工作階段容錯移轉的寫入內容。
啟動應用程式伺服器,然後使用您在部署期間指定的網路位置存取使用者應用程式入口網站。
本節的內容可協助您建立 Identity Applications 在 WebSphere 應用程式伺服器上正常運作所需的新 JVM 系統內容。
以管理員使用者身分登入 WebSphere 管理員主控台。
在左側窗格中,按一下伺服器 > 應用程式伺服器。
在伺服器清單中,按一下伺服器名稱。例如 server1。
在內容窗格中的設定清單內,按一下伺服器基礎架構下的 Java 和程序管理。
展開連結,選取「程序定義」。
在其他內容下的清單中,按一下 Java 虛擬機器。
在 JVM 頁面的其他內容標題下,按一下自定內容。
若要新增 extend.local.config.dir JVM 系統內容,請完成以下步驟:
按一下「新增」。
對於名稱,請指定 extend.local.config.dir。
對於值,請指定 hibernate.cfg.xml 檔案所在目錄的完整路徑。例如 /opt/netiq/idm/apps/UserApplication/。
對於描述,請指定該內容的描述。
例如,Identity Applications 組態檔案的路徑。
按一下確定來儲存變更。
若要新增 idmuserapp.logging.config.dir JVM 系統內容,請完成以下步驟:
按一下「新增」。
對於名稱,請指定 idmuserapp.logging.config.dir。
對於值,請指定 idmuserapp_logging.xml 檔案所在目錄的完整路徑。
例如 /opt/netiq/idm/apps/UserApplication/。
對於描述,請指定該內容的描述。
例如,Identity Applications 記錄組態檔案的路徑。
按一下確定來儲存變更。
若要新增 com.netiq.ism.config JVM 系統內容,請完成以下步驟:
按一下「新增」。
對於名稱,請指定 com.netiq.ism.config。
對於值,請指定包括 ism-configuation.properties 檔案名稱的完整路徑。
例如 /opt/netiq/idm/apps/UserApplication/ism-configuation.properties。
對於描述,請指定該內容的描述。
例如,Identity Applications ism properties 檔案。
按一下確定來儲存變更。
(視情況而定) 若要指定叢集環境的工作流程引擎 ID,請完成以下步驟:
按一下「新增」。
對於名稱,請指定 com.novell.afw.wf.engine-id。
對於值,請指定工作流程引擎的 ID。
對於描述,請指定該內容的描述,例如 workflow engine ID。
按一下確定來儲存變更。
您可能需要為 Identity Applications 設定共享文件庫。建立共享文件庫後,您還必須將該文件庫套用至新的類別載入器,以確保 WebSphere 使用 Identity Manager 版本的 JAR 檔案。若不執行此操作,WebSphere 隨附的 JAR 檔案會出現類別載入問題。WebSphere 類別載入問題可能表現出以下幾種例外:
ClassCastException
ClassNotFoundException
NoClassDefFoundException
UnsatisfiedLinkError
LinkageError
此程序包括以下活動:
以管理員使用者身分登入 WebSphere 管理員主控台。
在左側窗格中,展開環境。
按一下「共享文件庫」。
在內容窗格中,按一下新增。
指定名稱,例如 IDMUA Classpath。
對於類別路徑,請新增以下必要的 JAR 檔案:
log4j.jar
commons-logging-1.1.1.jar
IDMselector.jar
依預設,這些檔案位於 Identity Applications 的安裝目錄中。例如 /opt/netiq/idm/apps/UserApplication。
取消選取對此共享文件庫使用獨立的類別載入器。
按一下「確定」。
按一下「儲存」將變更儲存到主要組態。
以管理員使用者身分登入 WebSphere 管理員主控台。
展開應用程式伺服器 > 伺服器名稱 > 類別載入器。
附註:依預設,此選項會隱藏在「Java 與程序管理」區段中。
在內容窗格中,按一下新增以建立新的類別載入器。
選取本地類別載入器載入的類別優先 (父代最後)。
按一下「套用」。
選取共享文件庫參考。
按一下新增,然後選取您在設定共用文件庫 中建立的共享文件庫。
按一下「套用」。
按一下「確定」。
按一下「儲存」將變更儲存到主要組態。
本節的內容可協助您將 eDirectory 可信根證書輸入到 WebSphere 伺服器所在電腦上的金鑰儲存區中。您可以使用下列其中一種方式執行此程序:
將 eDirectory 可信根證書複製到代管 WebSphere 伺服器的電腦上。
Identity Manager 會將證書輸入到 IBM JRE for WebSphere 的以下位置:
cacerts 檔案
/lib/security 目錄,例如 /opt/IBM/WebSphere/AppServer/java_1.7_64/jre/lib/security
以 admin 使用者身分登入 WebSphere 管理主控台。
在左側窗格中,展開安全性 > SSL 證書和金鑰管理。
在內容窗格中,按一下相關項目下的金鑰儲存區和證書。
選取 NodeDefaultTrustStore (或您正在使用的可信證書儲存區)。
在其他內容下,按一下簽名者證書。
按一下「新增」。
鍵入證書檔案的別名和完整路徑。
將下拉式清單中的「資料」類型變更為「二進位 DER 資料」。
按一下「確定」。
您現在應該會在簽署者證書清單中看到證書。
按一下「儲存」將變更儲存到主要組態。
您必須使用 WebSphere 的 keytool 將證書輸入到 WebSphere 金鑰儲存區中。依預設,WebSphere 的 keytool 位於 /IBM/WebSphere/AppServer/java/bin 中。儲存區類型為 PKCS12。
將 eDirectory 可信根證書複製到代管 WebSphere 伺服器的電腦上。
「使用者應用程式」安裝程序會將證書輸出到您安裝「使用者應用程式」所在的目錄。
在代管 WebSphere 伺服器的機器上,透過指令行執行 WebSphere keytool。
例如:
keytool -import -trustcacerts -file servercert.der -alias myserveralias -keystore trust.p12 -storetype PKCS12
附註:如果您的系統上有多個 trust.p12,您必須指定到檔案的完整路徑。
您必須對安裝了應用程式之伺服器上的受支援 IBM JDK 執行無限制規則檔案,Identity Applications 才能有效執行。此外,您還必須對執行 RBPM 的每個 WebSphere IBM JDK 伺服器套用這些無限制規則檔案。
檢閱每個 WebSphere 伺服器 IBM JDK,確保已套用無限制規則檔案。如果沒有這些無限制規則檔案,啟動 RBPM 期間會發生不正確的金鑰大小
錯誤。
Identity Applications 使用 JGroups 來執行快取。在某些組態中,JGroups 要求您將 preferIPv4Stack 內容設定為 true,以確保 mcast_addr 結合成功。
如果不使用此選項,可能會發生以下錯誤:
[10/1/09 16:11:22:147 EDT] 0000000d UDP W org.jgroups.util.Util createMulticastSocket could not bind to /228.8.8.8 (IPv4 address); make sure your mcast_addr is of the same type as the IP stack (IPv4 or IPv6).
您還可能會看到此錯誤:
[3/21/12 10:04:32:470 EDT] 00000024 UDP E org.jgroups.protocols.TP down
failed sending message to null (131 bytes)
java.lang.Exception: dest=/228.8.8.8:45654 (134 bytes)
at org.jgroups.protocols.UDP._send(UDP.java:353)
參數 java.net.preferIPv4Stack=true 是一個系統內容,可以使用與其他系統內容 (例如 extend.local.config.dir) 相同的方式進行設定。如需設定系統內容的指示,請參閱節 33.6.2, 新增使用者應用程式組態檔和 JVM 系統內容。
Identity Applications 依存於 Java Message Service (JMS) 永久儲存區來儲存電子郵件。如果未正確設定 JMS,在應用程式伺服器關閉後,記憶體佇列中的所有電子郵件都將遺失。
以管理員使用者身分登入 WebSphere 管理員主控台。
若要建立新匯流排,請完成以下步驟:
按一下服務整合 > 匯流排。
按一下「新增」。
指定匯流排的名稱。例如 IDMProvBus。
取消選取匯流排安全性。
按下一步,然後確認變更。
按一下完成,然後按一下儲存。
若要設定匯流排,請完成以下步驟:
在服務整合 > 匯流排中,選取您在步驟 2 中建立的匯流排。
按一下組態 > 一般內容。
指定匯流排的描述。例如用於 IDM 應用程式的匯流排。
按一下套用,然後按一下儲存。
在組態索引標籤上,按一下拓撲 > 匯流排成員。
按一下「新增」。
指定要將 IDMProv.war 檔案部署在伺服器、叢集還是 WebSphere MQ 伺服器上,然後按下一步。
對於檔案儲存區,請指定訊息儲存區的類型,然後按下一步。
檢閱檔案儲存區的預設值,然後按下一步。
(選擇性) 調整匯流排的效能參數。
按下一步,然後按一下完成。
若要為匯流排建立主題連接,請完成以下步驟:
導覽至資源 > JMS > 主題連接部。
在範圍功能表中選取正確的範圍。例如 Node=MyNode01, Server=server1。
按一下「新增」。
選取預設訊息傳送提供程式,然後按一下確定。
點選「組態」。
指定主題連接的名稱。例如 ConnectionFactory。
對於 JNDI 名稱,請指定與主題連接名稱相同的值。例如 ConnectionFactory。
為主題連接指定簡短描述。例如用於 IDM 應用程式的主題連接部。
對於匯流排名稱,請選取您在步驟 2 中建立的匯流排。
按一下永久訂閱 > 用戶端,然後指定 IDMNotificationDurableTopic。
按一下服務品質 > 永久訊息可靠性,然後選取永久可靠性。
按一下共享永久訂閱 > 進階訊息傳送,然後選取永不共享。
按一下套用,然後按一下完成。
若要建立主題,請完成以下步驟:
導覽至資源 > JMS > 主題。
選取要使用的範圍。例如 Node=MyNode01, Server=server1。
按一下「新增」。
選取預設訊息傳送提供程式,然後按一下確定。
點選「組態」。
指定主題的名稱。例如 IDMNotificationDurableTopic。
對於 JNDI 名稱,請使用以下語法:topic/名稱。例如 topic/IDMNotificationDurableTopic。
為主題連接指定簡短描述。例如用於 IDM 應用程式的主題。
對於匯流排名稱,請選取您在步驟 2 中建立的匯流排。
按一下主題空間,然後選取 Default.Topic.Space。
按一下 JMS 傳送模式,然後選取永久。
按一下套用,然後按一下儲存。
登出 WebSphere 主控台。
在部署了 Identity Applications WAR 的伺服器上重新啟動 WebSphere。
若要驗證是否正確設定了 JMS 伺服器,請查看 SystemOut.log 檔案。
如果未正確設定 JMS 伺服器,SystemOut.log 檔案會依序包含以下幾行:
INFO [JMSConnectionMediator] Starting JMS notification system WARN [NotificationEngine] Could not properly initialize JMS persistence for the notification system. Will revert back to non-persistent asynchronous notification system. INFO [NotificationThread] Starting asynchronous notification system
在成功設定的組態中,SystemOut.log 檔案會依序包含以下類型的資訊:
INFO [JMSConnectionMediator] Starting JMS notification system %connection information% INFO [NotificationThread] Starting asynchronous notification system
======== [9/7/14 14:39:52:167 EDT] 00000000 SibMessage I [:] CWSID0021I: Configuration reload is enabled for bus IDMProvBus. [9/7/14 14:39:52:372 EDT] 00000000 SibMessage I [:] CWSIS1569I: Messaging engine N35020Node02.server1-IDMProvBus is using a file store. ======== [9/7/14 14:41:32:613 EDT] 0000000c SystemOut O 14:41:32,608 INFO [JMSConnectionMediator] Starting JMS notification system [9/7/14 14:41:32:841 EDT] 0000000c SharedPool I J2CA0086W: Shareable connection MCWrapper id 5c175c17 Managed connection [com.ibm.ws.sib.api.jmsra.impl.JmsJcaManagedConnection@490f490f <managedConnectionFactory=[com.ibm.ws.sib.api.jmsra.impl.JmsJcaManagedTopicConnectionFactoryImpl@1f9c1f9c <logWriter=null> <busName=IDMProvBus> <clientID=IDMNotificationDurableTopic> <userName=null> <password=null> <xaRecoveryAlias=> <nonPersistentMapping=ExpressNonPersistent> <persistentMapping=ReliablePersistent> <durableSubscriptionHome=N35020Node02.server1-IDMProvBus> <readAhead=Default> <temporaryQueueNamePrefix=null> <temporaryTopicNamePrefix=null> <target=null> <targetSignificance=Preferred> <targetTransportChain=null> <targetType=BusMember> <providerEndpoints=null> <connectionProximity=Bus> <shareDataSourceWithCMP=false> <shareDurableSubscriptions=NeverShared> <cachedFactory=com.ibm.ws.sib.api.jms.impl.JmsFactoryFactoryImpl@4fb24fb2> <producerDoesNotModifyPayloadAfterSet=false> <consumerDoesNotModifyPayloadAfterGet=false>]> <coreConnection=com.ibm.ws.sib.processor.impl.ConnectionImpl@b0b0b0b> <localTransaction=[com.ibm.ws.sib.api.jmsra.impl.JmsJcaManagedConnection$JmsJcaLocalTransaction@78ce78ce <localSITransaction=null>]> <xaResource=null> <metaData=null> <userDetails=[com.ibm.ws.sib.api.jmsra.impl.JmsJcaUserDetails@5b4d5b4d <userName=null> <password=null>]> <subject=null> <logWriter=null> <sessions=[[com.ibm.ws.sib.api.jmsra.impl.JmsJcaSessionImpl@21ff21ff <managedConnection=1225738511> <connection=828453217> <transacted=false> <applicationLocalTransaction=null> <reqInfo=[com.ibm.ws.sib.api.jmsra.impl.JmsJcaConnectionRequestInfo@219a219a> <userDetails=null> <coreConnection=com.ibm.ws.sib.processor.impl.ConnectionImpl@b0b0b0b> <request counter=0>]> <sessionClosed=false> <sessionInvalidated=false>]]> <connectionListeners=[com.ibm.ejs.j2c.ConnectionEventListener@1572625852]>] State:STATE_TRAN_WRAPPER_INUSE from resource ConnectionFactory was used within a local transaction containment boundary. [9/7/14 14:41:32:938 EDT] 0000001a SystemOut O 14:41:32,938 INFO [NotificationThread] Starting asynchronous notification system