由於配置資料儲存在網域管理伺服器的儲存庫 (中央儲存庫) 中,並在節點代理程式的本地機器上快取,因此,兩者必須同步化。使用者必須使用管理工具採取明確的動作,快取記憶體才能同步化。
本小節包含下列主題:
第一次啟動節點代理程式時,該節點代理程式將向網域管理伺服器 (DAS) 傳送一個請求,以獲得中央儲存庫中的最新資訊。當節點代理程式成功地與 DAS 取得聯絡並獲得配置資訊時,該節點代理程式即被連結到該 DAS。
asadmin start-node-agent 指令會自動啟動遠端伺服器實例,而不與 DAS 同步。使用 --startinstances=false 選項,緊跟在 asadmin start-instance 指令之後,以啟動與受 DAS 管理之中央儲存庫同步的遠端伺服器實例。
如果您在 DAS 上建立了萬用字元節點代理程式,則第一次啟動節點代理程式時,該節點代理程式將從 DAS 的中央儲存庫中獲取其配置。初始啟動節點代理程式期間,如果由於沒有執行 DAS 而使該節點代理程式無法連結 DAS,該節點代理程式將停止並保持未連結狀態。
如果在網域中變更了節點代理程式的配置,這些變更將在節點代理程式執行時自動傳送給本地機器中的節點代理程式。
如果在 DAS 中刪除了節點代理程式的一個配置,則下次該節點代理程式進行同步時將停止並會將其自身標記為待刪除狀態。使用本機 asadmin delete-node-agent 指令手動將其刪除。
如果您使用 Admin Console 或 asadmin 工具明確地啟動伺服器實例,則伺服器實例與中央儲存庫同步。如果此同步化作業失敗,則伺服器實例不會啟動。
如果節點代理程式不是透過 Admin Console 或 asadmin 工具傳送明確的請求來啟動伺服器實例,則不會同步化該伺服器實例的儲存庫快取記憶體。該伺服器實例將以儲存在其快取中的配置執行。您不能增加或移除位於遠端伺服器實例之快取中的檔案。
遠端伺服器實例之配置可視為快取 (在 nodeagents/na1/server1 下的所有檔案),並屬於應用程式伺服器所有。在特殊情況下,若使用者移除了遠端伺服器實例的所有檔案並重新啟動節點代理程式, 則將會重新建立遠端伺服器實例 (例如 server1),且將會同步所有必要檔案。
應用程式伺服器會保持下列檔案與目錄的同步。
表 8–1 遠端伺服器實例間會同步的檔案與目錄
檔案或目錄 |
說明 |
---|---|
applications |
所有已部署的應用程式。此目錄 (與子目錄) 同步的部分,是根據從伺服器實例所參照的應用程式而決定。節點代理程式未同步任何應用程式,因為其並未參照任何應用程式。 |
config |
包含整個網域的配置檔案。此目錄中的所有檔案皆已同步,僅執行階段暫存檔案為例外,諸如 admch、admsn、secure.seed、. timestamp 和 __timer_service_shutdown__.dat。 |
config/config_name |
儲存由所有實例共用的檔案之目錄 (此處所指實例僅針對使用名為 config_name 之配置的實例)。domain.xml 中所定義的每個配置皆有一個像這樣的目錄。此目錄中的所有檔案皆與使用 config_name 的伺服器實例同步。 |
config/config_name/lib/ext |
可放置 Java 延伸類別 (如 zip 或 jar 歸檔) 的資料夾。其為部署至伺服器實例的應用程式所使用 (此處所指伺服器實例僅針對使用名為 config_name 之配置的實例)。會使用 Java 副檔名機制載入這些 jar 檔案。 |
docroot |
HTTP 文件根目錄。在出廠配置中,網域內所有的伺服器實例皆會使用相同的文件根目錄。需將虛擬伺服器之文件根目錄特性配置為使伺服器實例使用不同的文件根目錄。 |
generated |
Java EE 應用程式與模組之產生檔案,例如 EJB stub、編譯過的 JSP 類別與安全策略檔案。此目錄會與應用程式目錄同步。因此,只有伺服器實例參照之應用程式所對應的目錄會同步。 |
lib, lib/classes |
可放置由應用程式 (已部署至整個網域) 使用之共用 Java 類別檔案 (如 jar 及 zip 歸檔) 的資料夾。會使用應用程式伺服器之類別載入器載入這些類別。類別載入器之載入順序為:lib/classes、lib/*.jar、lib/*.zip。 |
lib/ext |
可放置由應用程式 (已部署至整個網域) 使用之 Java 延伸類別 (如 zip 及 jar 歸檔) 的資料夾。會使用 Java 副檔名機制載入這些 jar 檔案。 |
應用程式的 --libraries 部署時間屬性可用於指定應用程式之執行階段相依性。
若要使程式庫可供整個網域使用,您可以將 JAR 檔案置於 domain-dir/lib 或 domain-dir/lib/classes 中。(如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Developer’s Guide」中的「Using the Common Classloader」。) 通常,JDBC 驅動程式和網域內所有應用程式共用之其他公用程式程式庫皆為如此。
若要用於整個叢集或獨立伺服器,請將 jar 複製到 domain-dir/domain1/config/xyz-config/lib 目錄。接著,將 jar 增加至 xyz-config 的 classpath-suffix 或 classpath-prefix 元素。完成後,使用 xyz-config 的所有伺服器實例之 jar 便會同步。
摘要:
domains/domain1/lib - 範圍為整個網域、共用類別載入器,自動增加 jar。
domains/domain1/config/cluster1、config/lib - 整個配置,更新 classpath-prefix 或 classpath-suffix。
domains/domain1/config/cluster1、config/lib/ext - 自動增加至 java.ext.dirs。
可跨網域同步配置檔案 (位於 domains/domain1/config 之下)。若您要為獨立伺服器實例 (server1) 使用之 server1-config 自訂 server.policy 檔案,請將修改後的 server.policy 檔案置於 domains/domain1/config/server1-config 目錄之下。
修改後的這個 server.policy 檔案將只針對獨立伺服器實例 server1 同步。請務必記得更新 jvm-option。例如︰<java-config> ... <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config /server1-config/server.policy</jvm-options></java-config>
當環境中有大型應用程式要進行同步或者可用記憶體受到限制時,您可以調整 JVM 選項以限制記憶體的使用。這種調整將減少收到記憶體不足錯誤的可能性。實例同步 JVM 使用的是預設設定,但您可以配置 JVM 選項來變更這些設定。
使用 INSTANCE-SYNC-JVM-OPTIONS 特性設定 JVM 選項。用於設定特性的指令為:
asadmin set domain.node-agent.node_agent_name.property.INSTANCE-SYNC-JVM-OPTIONS="JVM_options"
例如︰
asadmin set domain.node-agent.node0.property.INSTANCE-SYNC-JVM-OPTIONS="-Xmx32m -Xss2m"
在此範例中,節點代理程式為 node0,JVM 選項為 -Xmx32m -Xss2m。
如需更多資訊,請參閱 http://java.sun.com/docs/hotspot/VMOptions.html。
變更 INSTANCE-SYNC-JVM-OPTIONS 特性後,請重新啟動節點代理程式,因為在節點代理程式的配置中新增或變更特性時節點代理程式並不會自動同步。
若您的應用程式需要儲存和讀取透過應用程式伺服器所同步之目錄 (applications、generated、docroot、config、lib) 中的檔案,請使用 doNotRemoveList 旗標。此屬性使用以逗號分隔之檔案或目錄清單。您的應用程式附屬檔案於伺服器啟動期間並未移除,即使這些檔案不在 DAS 所管理的中央儲存庫中。若中央儲存庫中已有相同檔案,則將於同步化期間被覆寫。
使用 INSTANCE-SYNC-JVM-OPTIONS 特性以傳入 doNotRemoveList 屬性。
例如︰
<node-agent name="na1" ...>
...
<property name="INSTANCE-SYNC-JVM-OPTIONS" value="-Dcom.sun.appserv.doNotRemoveList=applications/j2ee-modules/<webapp_context> /logs,generated/mylogdir"/>
</node–agent>