由於配置資料儲存在網域管理伺服器的儲存庫 (中央儲存庫) 中,並在節點代理程式的本地機器上快取,因此,兩者必須同步化。使用者必須透過管理工具明確執行動作才能使快取同步。
本小節包含下列主題:
第一次啟動節點代理程式時,該節點代理程式將向網域管理伺服器 (DAS) 傳送一個請求,以獲得中央儲存庫中的最新資訊。當節點代理程式成功地與 DAS 取得聯絡並獲得配置資訊時,該節點代理程式即被連結到該 DAS。
依預設,asadmin start-node-agent 指令將自動啟動遠端伺服器實例,而不會與 DAS 同步。如果您要啟動的遠端伺服器實例已經與 DAS 管理的中央儲存庫同步,請指定 asadmin start-node-agent 指令的 --startinstances=false 選項。然後使用 asadmin start-instance 指令啟動遠端伺服器實例。
如果您在 DAS 上建立了預留位置節點代理程式,則第一次啟動節點代理程式時,該節點代理程式將從 DAS 的中央儲存庫中獲取其配置。初始啟動節點代理程式期間,如果由於沒有執行 DAS 而使該節點代理程式無法連結 DAS,該節點代理程式將停止並保持未連結狀態。
如果在網域中變更了節點代理程式的配置,這些變更將在節點代理程式執行時自動傳送給本地機器中的節點代理程式。
如果在 DAS 中刪除了節點代理程式的一個配置,則下次該節點代理程式進行同步時將自行停止,並將自身標記為待刪除狀態。使用本機 asadmin delete-node-agent 指令手動將其刪除。
如果使用管理主控台或 asadmin 工具明確地啟動伺服器實例,則伺服器實例將與中央儲存庫同步。如果此同步失敗,則伺服器實例不會啟動。
如果節點代理程式啟動伺服器實例的方法並非向管理主控台或 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 文件根目錄。在即開即用 (out of the box) 配置中,網域中的所有伺服器實例均使用相同的 docroot。需要將虛擬伺服器的 docroot 特性配置為使伺服器實例使用不同的 docroot。 |
generated |
已產生的 Java EE 應用程式檔案和模組檔案,例如 EJB stub、已編譯的 JSP 類別和安全策略檔案。此目錄與 applications 目錄同時同步。因此,僅同步應用程式 (由伺服器實例所參照) 對應的目錄。 |
lib、lib/classes |
可放置共用 Java 類別檔案或者 jar 和 zip 歸檔檔案 (供部署到整個網域的應用程式使用) 的資料夾。您必須使用應用程式伺服器的類別載入器載入這些類別。類別載入器的載入順序為:lib/classes、lib/*.jar、lib/*.zip。 |
lib/ext |
可放置 Java 延伸類別 (例如 zip 或 jar 歸檔檔案,以供部署到整個網域的應用程式使用) 的資料夾。您必須使用 Java 延伸機制載入這些 jar 檔案。 |
lib/applibs |
將附屬 jar 置於 domains/<domain_name>lib/applibs 之下,並透過 libraries 選項,指定 jar 檔案之相對路徑。 例如,asadmin deploy --libraries commons-coll.jar,X1.jar foo.ear |
java-web-start |
此目錄 (與子目錄) 同步的部分,是根據從伺服器實例所參照的應用程式而決定。 |
您可以使用應用程式的 --libraries 部署時間屬性來指定應用程式的執行階段相依性。指定相對路徑後 (jar 名稱即可),Application Server 會嘗試在 domain-dir /lib/applibs 中找出指定的程式庫。
為使程式庫可用於整個網域,可以將 JAR 檔案放在 domain-dir/lib 或 domain-dir/lib/classes 中。(如需更多資訊,請參閱「Sun Java System Application Server 9.1 Developer’s Guide」中的「Using the Common Class Loader」。)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/lib/applibs - 範圍為應用程式,自動增加至應用程式類別載入器。
domains/domain1/config/cluster1, config/lib/ext - 自動增加至 http://java.sun.com/j2se/1.5.0/docs/guide/extensions/extensions.html。
整個網域中的配置檔案 (位於 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 以及 java-web-star) 中的檔案,請使用 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>