Lesson1:透過 commons-configuration 存取設定檔

news/2024/7/7 16:25:29

 在我們撰寫一些系統的時候,往往需要設定一些基本的屬性,在使用 Java 進行 Web 開發之中,可以將相關設定放在 JNDI Server 再透過 context lookup 重量級的方式來取得相關的屬性。不過,有時候簡單的環境,不必耗時耗力去搞清楚如何去使用 Java naming 的技術,往往不過是要讀取一些設定檔罷了,所以我們這時候可以利用 Jakarta commons-configuration 的小工具, 來讓我們簡化這方面的工作。

什麼叫做一個設定檔?簡單來說,一個設定檔最重要的就是有屬性名稱與屬性值,通常都是利用 String 的方式來存取,必要時候再進行轉換物件型態為實質的屬性型態。話說回來,現在設定檔的撰寫方式琳瑯滿目,Jakarta commons-configuration 是否可以滿足我們的需求?我本身大多採用 Properties 或 XML 的方式在撰寫設定檔,也許會有人將設定在資料庫之中,很令人高興的是 commons-configuration 的確可以涵蓋大多數人的需求。
由 http://jakarta.apache.org/commons/configuration/ 下載最新的版本,將它解壓縮到一個目錄之後,我們可以看到該目錄之中,有一個 commons-configuration-##.##.jar 並且將該 jar 檔案放到你的 /WEB-INF/lib/ 之下,當 Application Server 重新載入該 webapp 之後, 就代表可以使用了。

因為 Servlet 可以設定在 webapp 啟動的同時,馬上呼叫。只需要在 web.xml 設定 load-on-startup 即可,所以我們利用該技巧,將相關的設定屬性值在剛開始的時候取出放到某個 instance 之中,這樣就可以提供給其他程式直接使用。

範例 1-1:透過 SystemInitServlet 載入 system-config.xml

system-config.xml 放在 /WEB-INF/conf 之下

 

< config >
    
< ip > 10.10.1.1 ip>
    
<account>jini account>
    
<password>jakarta99 password>
    
<roles>
        
<role>admin role>
        
<role>manager role>
        
<role>user role>
    
roles>
config>

 


接著再利用 SystemInitServlet 中利用 XMLConfiguratin 取得 system-config.xml Configuration config = new XMLConfiguration (configPath);

 

String ip  =  config.getString( " ip " );
String account 
=  config.getString( " account " );
String password 
=  config.getString( " password " );
List roles 
=  config.getList( " roles.role " );


這樣,我就可以自由利用這幾個設定在 system-config.xml 的屬性,進行系統中的設定。

範例 1-2:透過 SystemInitServlet 載入 system-config.properties

其實我們僅僅需要修改 Configuration 讀取的檔案位置,並且修改為 properties 檔案名稱。最後利用 PropertiesConfiguration 就可以讀取相關的資訊,也可以讀取 Collection 型態的集合屬性。

Configuration config = new PropertiesConfiguration(configPath);

另外,我們可以 config.setProperties(“addproperty”, “this is added by configuration” ); 接著 config.save() 將相關設定值存放到該 properties 的檔案之中。

總之,透過 commons-configuration 可以簡化您在存取設定檔案的工作,就不用花時間去了解 FILE IO 的程式運作方式,更可以簡化 Java 存取 XML 的工作。 當然,隨著版本的演進,功能越來越多,例如兩個設定檔的合併、plist 的支援等等,所以可預期的是,我們將可以用到更多支援的設定檔方式。





http://www.niftyadmin.cn/n/3653808.html

相关文章

MySQL 用户权限详细汇总

1&#xff0c;MySQL权限体系mysql 的权限体系大致分为5个层级: 全局层级&#xff1a; 全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON .和REVOKE ALL ON .只授予和撤销全局权限。 数据库层级&#xff1a; 数据库权限适用于一个给定数…

MySQL 5 7 10最新版本源代码安装详细过程

1&#xff0c;下载地址&#xff1a;安装包下载地址&#xff1a;http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz可以wget下载&#xff0c;也可以在pc本地网页上下载完再远程传到linux上面去。 安装文档地址&#xff1a;http://dev.mysql.com/doc/refman/5.7…

ERROR 1227 42000 Access denied you need at least one of

1 用以往的mysql登陆模式登陆[mysqleanintmydbc002db1 mysqllog]$ mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3157186Server version: 5.5.25a-log MySQL EA ReleaseCopyright (c) 2000, 2011, Oracle an…

Web Development by Java Opensources (目錄)

這些是我曾經發表在台灣中央研究院-自由軟體鑄造場的電子報文章, 整理之後放在這裡. 以我的目標將分為三個 Milestone , M1 為 JSP/Servlet POJO solutions 的介紹, M2 為 WebServices/XML solutions 的介紹, M3 為完整的系統或是框架來介紹 !目錄PART1: 嘗試使用來自 Opensour…

zabbix3 0 2 实现发送email报警的详细过程

1&#xff0c;安装mail基础组件安装mail的基础组件&#xff1a;yum install sendmail -y …

Lession 2 : 跨越 IDE 的 Apache Ant

Java 最基礎的編譯工具就是 JDK 之中的 javac 這個編譯器&#xff0c;但是往往在開發一個大型的專案之時&#xff0c;我們通常會利用 IDE 來完成相關的程式開發、除錯、編譯及包裝的動作&#xff0c;進而與一些應用伺服器或是資料庫做相關的整合。但是&#xff0c;往往開發習慣…

Zabbix 如何实现邮件报警通知以及免费短信报警通知

前提条件&#xff1a;(1) zabbix服务器端已经成功安装并且运行。(2) zabbix客户端已经成功建立并且运行。1 下载并且安装msmtp软件Wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/downloadtar jxvf msmtp-1.4.32.tar.bz2cd msmtp-1.4.32…

台灣的 Web 2.0

自從無名小站 ( wretch.cc ) 被 Yahoo! 收購後, 投資客紛紛開始尋找下個標的, 有技術有抱負的團隊也紛紛提出許多有趣且前衛的 Web 2.0 網站.台灣經濟部技術處與資策會都提出有關 Web2.0 的補助方案. http://www.web20.org.tw/wp/ideas/index.htm 只要有創意點子, 就可以透過輔…