定義環(huán)境變量 用XML在組件的部署描述符文件中定義環(huán)境變量。假如使用部署工具(例如J2EE參考實(shí)現(xiàn)所帶的部署工具程序),你就可以用GUI方式確定部署描述符。但是下面我們還是假定用文本編輯器手工編輯部署描述符。 環(huán)境變量有四個(gè)部分: · 描述: 定義在scription> tag 內(nèi)的一個(gè)串。 · 名稱:定義在<env-entry-name> tag內(nèi)的一個(gè)串。 · 值:定義在<env-entry-value> tag內(nèi)的一個(gè)值。 · 類名:定義在<env-entry-type> tag內(nèi)的環(huán)境變量的類型 描述是可選的文字描述,出現(xiàn)在部署工具的用戶界面上。它告訴部署者在確定環(huán)境實(shí)體引用時(shí)做什么。換句話說(shuō),它是一個(gè)可讀描述,告訴部署者如何填寫(xiě)其他值。它也告訴部署者這個(gè)環(huán)境變量是否是可選的。 環(huán)境變量的名稱是相對(duì)于JNDI上下文名“jndi:comp/env”的,組件用名稱查找環(huán)境變量。所有環(huán)境變量都由它們的容器在JNDI上下文中注冊(cè)。 環(huán)境變量的值是環(huán)境變量應(yīng)取的值,格式是字符串。除了表示單個(gè)字符的類型java.lang.Character以外,答應(yīng)作為環(huán)境變量的所有類型都有以串作為參數(shù)的構(gòu)造函數(shù)。Env-entry-value tag包含了用于值的構(gòu)造函數(shù)的串。 環(huán)境變量的類型是環(huán)境變量值的類型類名。必須是下面的類型之一: l java.lang.Boolean l java.lang.Byte l java.lang.Character l java.lang.Double l java.lang.Float l java.lang.Integer l java.lang.Long l java.lang.Short l java.lang.String
SMTP主機(jī)例子中的環(huán)境變量可以象下面這樣: <env-entry> <description> Enter the host name for sending email </description> <env-entry-name>SMTP Host Name</env-entry-name> <env-entry-value> homer.sPRingfield.ma.us </env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
<env-entry> <description>SMTP port number for email </description> <env-entry-name>SMTP Port</env-entry-name> <env-entry-value>2101</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type> </env-entry>
<env-entry> <description> User authentication for SMTP server </description> <env-entry-name>SMTP User</env-entry-name> <env-entry-value>bart</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
<env-entry> <description> PassWord for SMTP user </description> <env-entry-name>SMTP Password</env-entry-name> <env-entry-value>D'oh!</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
使用環(huán)境變量 要在代碼中使用環(huán)境變量很簡(jiǎn)單,用JNDI查找環(huán)境變量就行了。注重要使方法Context.lookup的結(jié)果與適當(dāng)?shù)念愋拖嗯洹H缦滤荆?br /> try { InitialContext ic = new InitialContext(); Context ctx = ic.lookup("java:comp/env"); String hostname = (String)(ctx.lookup("SMTP Host")); Integer port = (Integer)(ctx.lookup("SMTP Port")); String user = (String)(ctx.lookup("SMTP User")); String password = (String)(ctx.lookup("SMTP Password"));