統一、動態的管理系統配置屬性
每個系統中都會有需要配置的屬性,而通常這些屬性的配置都會是分散式的管理,而且很多時候都是不支持動態,在實現這些屬性的管理(新增、編輯、刪除、保存等)時總是要不斷的做重復的工作,如果框架中能提供一個這樣的基礎設施那么對于系統的配置屬性管理來說就會比較好了,這樣的話系統中所有的屬性配置就可以采用統一的方式進行配置、獲取、管理和動態的更新了,如果能動態的管理系統配置屬性的話,簡單的動態改變系統行為也就自然的可以實現了。
要實現一個這樣統一的、動態的管理系統配置屬性的功能,首先自然是要提供一個統一的屬性配置管理的服務,通過此服務統一的獲取配置屬性、管理配置屬性、存儲配置屬性,在這些屬性被修改后怎么去通知需要知道屬性修改了的服務呢,這個時候可以用一個典型的事件訂閱/發布的模式來完成,需要訂閱的服務就可以通過實現訂閱的接口來獲取到屬性被修改的通知,自然,訂閱的服務需要告訴那個統一管理屬性的服務,同時還要告訴它你需要訂閱什么主題,這樣的話就只有當你所關心的屬性被修改的情況下才會通知到你,在得到屬性被改動的通知下可以做出相應的反應。
屬性配置管理的服務的代碼可能會類似如此:





















??????????????? private ConfigurationAdmin admin;
??????????????? public void setAdmin(ConfigurationAdmin admin){
???????????????????this.admin=admin;
??????????????? }













這是統一、動態的管理系統配置屬性的一種簡單的實現方案,而其實系統的配置屬性的管理會比這更復雜很多,象有些時候還需要支持遠程的管理等等,但統一、動態的管理系統配置屬性能給系統帶來很大的好處,甚至可以使得動態的改變系統行為也得到實現。
如果你想有更好的統一、動態管理系統配置屬性的解決方案,可以參見OSGI R4中的Configuration Admin Service,它除了實現我之前提及的需求以外,還能提供其他更多的功能,象我所說的遠程管理也是支持,在OSGI中使用會稍有不同,但更好用,但無論你是否使用OSGI,參考它來實現自己的一個統一、動態管理系統配置屬性的功能還是可以的......
posted on 2006-08-24 20:18 BlueDavy 閱讀(3438) 評論(2) 編輯 收藏 所屬分類: 系統設計 、OSGi、SOA、SCA