DefaultContext元素代表Context元素的配置設置的一個子集,可以嵌套在Engine或者Host元素中,表示自動創建的Context的缺省配置屬性。 在什么情況下,Catalina會自動創建Context?有關這方面的更多信息,參考應用自動發布和用戶web應用。
DefaultContext元素代表Context元素的配置設置的一個子集,可以嵌套在Engine或者Host元素中,表示自動創建的Context的缺省配置屬性。
在什么情況下,Catalina會自動創建Context?有關這方面的更多信息,參考應用自動發布和用戶web應用。
公共屬性 所有DefaultContext的實現支持如下屬性: 屬性 描述 cookies 如果想利用cookies來傳遞session identifier(需要客戶端支持cookies),設為ture。否則為false,這種情況下只能依靠URL Rewriting傳遞session identifier。 crossContext 如果想在應用內調用ServletContext.getContext()來返回在該虛擬主機上運行的其他web application的request dispatcher,設為true。在安全性很重要的環境中,設為false,使得getContext()總是返回null。缺省值為false。 reloadable 如果希望Catalina監視/WEB-INF/classes/和/WEB-INF/lib下面的類是否發生變化,在發生變化的時候自動重載web application,設為true。這個特征在開發階段很有用,但也大大增加了服務器的開銷。因此,在發布以后,不推薦使用。但是,你可以使用Manager應用在必要的時候觸發應用的重載。 wrapperClass org.apache.catalina.Wrapper實現類的名稱,用于該Context管理的servlets。如果沒有指定,使用標準的缺省值。 標準實現 DefaultContext的標準實現是org.apache.catalina.core.DefaultContext,它還支持如下的附加屬性: 屬性 描述 swallowOutput 如果該值為true,System.out和System.err的輸出被重定向到web應用的logger。如果沒有指定,缺省值為false useNaming 如果希望Catalina為該web應用使能一個JNDI InitialContext對象,設為true。該InitialialContext符合J2EE平臺的約定,缺省值為true。
所有DefaultContext的實現支持如下屬性: 屬性 描述 cookies 如果想利用cookies來傳遞session identifier(需要客戶端支持cookies),設為ture。否則為false,這種情況下只能依靠URL Rewriting傳遞session identifier。 crossContext 如果想在應用內調用ServletContext.getContext()來返回在該虛擬主機上運行的其他web application的request dispatcher,設為true。在安全性很重要的環境中,設為false,使得getContext()總是返回null。缺省值為false。 reloadable 如果希望Catalina監視/WEB-INF/classes/和/WEB-INF/lib下面的類是否發生變化,在發生變化的時候自動重載web application,設為true。這個特征在開發階段很有用,但也大大增加了服務器的開銷。因此,在發布以后,不推薦使用。但是,你可以使用Manager應用在必要的時候觸發應用的重載。 wrapperClass org.apache.catalina.Wrapper實現類的名稱,用于該Context管理的servlets。如果沒有指定,使用標準的缺省值。
所有DefaultContext的實現支持如下屬性:
cookies
如果想利用cookies來傳遞session identifier(需要客戶端支持cookies),設為ture。否則為false,這種情況下只能依靠URL Rewriting傳遞session identifier。
crossContext
如果想在應用內調用ServletContext.getContext()來返回在該虛擬主機上運行的其他web application的request dispatcher,設為true。在安全性很重要的環境中,設為false,使得getContext()總是返回null。缺省值為false。
reloadable
如果希望Catalina監視/WEB-INF/classes/和/WEB-INF/lib下面的類是否發生變化,在發生變化的時候自動重載web application,設為true。這個特征在開發階段很有用,但也大大增加了服務器的開銷。因此,在發布以后,不推薦使用。但是,你可以使用Manager應用在必要的時候觸發應用的重載。
wrapperClass
org.apache.catalina.Wrapper實現類的名稱,用于該Context管理的servlets。如果沒有指定,使用標準的缺省值。
DefaultContext的標準實現是org.apache.catalina.core.DefaultContext,它還支持如下的附加屬性: 屬性 描述 swallowOutput 如果該值為true,System.out和System.err的輸出被重定向到web應用的logger。如果沒有指定,缺省值為false useNaming 如果希望Catalina為該web應用使能一個JNDI InitialContext對象,設為true。該InitialialContext符合J2EE平臺的約定,缺省值為true。
DefaultContext的標準實現是org.apache.catalina.core.DefaultContext,它還支持如下的附加屬性:
swallowOutput
如果該值為true,System.out和System.err的輸出被重定向到web應用的logger。如果沒有指定,缺省值為false
useNaming
如果希望Catalina為該web應用使能一個JNDI InitialContext對象,設為true。該InitialialContext符合J2EE平臺的約定,缺省值為true。
Contxt參數(Context Parameters) 可以在Context中元素中嵌套<Parameter>元素,配置帶有名稱的值,這些值作為servletcontext初始化參數,對整個web應用可見。比如,你可以像這樣創建初始化參數: <DefaultContext ...> ... <Parameter name="companyName" value="My Company, Incorporated" override="false"/> ... </DefaultContext> 這與在/WEB-INF/web.xml中包含如下元素相等: <context-param> <param-name>companyName</param-name> <param-value>My Company, Incorporated</param-value> </context-param> 區別是,前者不需要修改deployment descriptor來定制這個值。 <Parameter>元素的有效屬性值如下: 屬性 描述 description 關于該context初始化參數的文字描述(可選) name 要創建的context初始化參數的名稱 override 如果不希望/WEB-INF/web.xml中具有相同參數名稱的<context-param>覆蓋這里指定的值,設為false。缺省值為true。 value 調用ServletContext.getInitParameter()時,返回給應用的參數值。 環境條目 可以在Context中嵌套<Environment>元素,配置命名的值,這些值作為環境條目資源(Environment Entry Resource),對整個web應用可見。比如,可以按照如下方法創建一個環境條目: <DefaultContext ...> ... <Environment name="maxExemptions" value="10" type="java.lang.Integer" override="false"/> ... </DefaultContext> 這與在/WEB-INF/web.xml中包含如下元素是等價的: <env-entry> <env-entry-name>maxExemptions</param-name> <env-entry-value>10</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type> </env-entry> but does not require modification of the deployment descriptor to customize 區別是,前者不需要修改deployment descriptor來定制這個值。 <Environment>元素的有效屬性所如下: 屬性 描述 description 環境條目的文字描述(可選) name 環境條目的名稱,相對于java:comp/env context。 override 如果不希望/WEB-INF/web.xml中具有相同名稱的<env-entry>覆蓋這里指定的值,設為false。缺省值為true。 type 環境條目的Java類名的全稱.在/WEB-INF/web.xml中,<env-entry-type>必須是如下的值:java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, or java.lang.String. value 通過JNDI context請求時,返回給應用的參數值。這個值必須轉換成type屬性定義的Java類型 生命期Listeners(Lifecycle Listeners) 如果一個Java對象需要知道Context什么時候啟動,什么時候停止,可以在這個對象中嵌套一個Listener元素。該Listener元素必須實現了org.apache.catalina.LifecycleListener接口,在發生對應的生命期事件的時候,通知該Listener。可以按照如下的格式配置這樣的Listener: <DefaultContext ...> ... <Listener className="com.mycompany.mypackage.MyListener" ... > ... </DefaultContext> 注意,一個listener可以具有任意多的附加屬性。屬性名與JavaBean的屬性名相對應,使用標準的屬性命名方法。 資源定義(Resource Definitions) 可以在/WEB-INF/web.xml中定義資源的特性。使用JNDI查找<resource-ref>和<resource-env-ref>元素時,這些特性被返回。對同一資源名稱,還必須定義資源參數(見下面“資源參數”小節),這些參數用來配置對象工廠(object factory)以及對象工廠的屬性。 比如,你可以按照如下方式創建資源定義: <DefaultContext ...> ... <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" description="Employees Database for HR Applications"/> ... </DefaultContext> 這等價于在/WEB-INF/web.xml中包含如下元素: <resource-ref> <description>Employees Database for HR Applications</description> <res-ref-name>jdbc/EmployeeDB</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref> 區別是,前者不需要修改deployment descriptor來定制這個值。 <Resource>元素的有效屬性如下: 屬性 描述 auth 指定是web應用代碼本身sign on到對應的resource mananger,還是由container代表web應用sign on到resource manager。該屬性的值必須是Application或者Container。如果在web application deployment descriptor中使用<resource-ref>,這個屬性是必需的,如果使用<resource-env-ref>,這個屬性是可選的。 description 資源的文字描述(可選) name 資源的名稱,相對于java:comp/env context scope 指定通過這個resource manager得到的連接是否共享。該屬性的值必須是Shareable或者Unshareable。缺省情況下,假定連接是共享的。 type 當web應用查找該資源的時候,返回的Java類名的全稱。 資源參數(Resource Parameters) 資源參數用來配置資源管理器(resource manager,或對象工廠,object factory)。在做JNDI查找時,資源管理器返回查找的對象。在資源可以被訪問之前,對<Context>或<DefaultContext>元素的每個<Resource>元素,或者/WEB-INF/web.xml中定義的每個<resource-ref>或<resource-env-ref>元素,都必須定義資源參數。 資源參數是用名稱定義的,使用的資源管理器(或者object factory)不同,參數名稱的集合也不一樣。這些參數名和工廠類的JavaBeans屬性相對應。JNDI實現通過調用對應的JavaBeans屬性設置函數來配置特定的工廠類,然后通過lookup()調用使得該實例可見。 一個JDBC數據源的資源參數可以按照如下方式定義: <DefaultContext ...> ... <ResourceParams name="jdbc/EmployeeDB"> <parameter> <name>driverClassName</name> <value>org.hsql.jdbcDriver</value> </parameter> <parameter> <name>driverName</name> </value>jdbc:HypersonicSQL:database</value> </parameter> <parameter> <name>user</name> <value>dbusername</value> </parameter> <parameter> <name>password</name> <value>dbpassword</value> </parameter> </ResourceParams> ... </DefaultContext> 如果你需要為某個特定的資源類型指定工廠內的Java類名,在<ResourceParams>元素中嵌套一個叫做factory的<parameter>條目。 <Resourceparams>元素的有效屬性如下: 屬性 描述 name 配置的資源名稱,相對于java:comp/env context。這個名稱必須與$CATALINA_HOME/conf/server.xml中某個<Resource>元素定義的資源名稱匹配,或者在/WEB-INF/web.xml中通過<resource-ref>或者<resource-env-ref>元素應用。 資源連接(Resource Links) 資源連接用于創建到全局JNDI資源的連接。在連接名稱上進行JNDI查詢會返回被連接的global 資源。 比如,你可以按照如下方法創建一個資源連接: <DefaultContext ...> ... <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer" ... </DefaultContext> <ResourceLink>元素的有效屬性如下: 屬性 描述 global 被連接的連接全局資源的名稱 name 創建的資源連接的名稱,相對于java:comp/env context type 當web應用在該資源連接上進行查找時,返回的Java類名的全稱
可以在Context中元素中嵌套<Parameter>元素,配置帶有名稱的值,這些值作為servletcontext初始化參數,對整個web應用可見。比如,你可以像這樣創建初始化參數: <DefaultContext ...> ... <Parameter name="companyName" value="My Company, Incorporated" override="false"/> ... </DefaultContext> 這與在/WEB-INF/web.xml中包含如下元素相等: <context-param> <param-name>companyName</param-name> <param-value>My Company, Incorporated</param-value> </context-param> 區別是,前者不需要修改deployment descriptor來定制這個值。 <Parameter>元素的有效屬性值如下: 屬性 描述 description 關于該context初始化參數的文字描述(可選) name 要創建的context初始化參數的名稱 override 如果不希望/WEB-INF/web.xml中具有相同參數名稱的<context-param>覆蓋這里指定的值,設為false。缺省值為true。 value 調用ServletContext.getInitParameter()時,返回給應用的參數值。
可以在Context中元素中嵌套<Parameter>元素,配置帶有名稱的值,這些值作為servletcontext初始化參數,對整個web應用可見。比如,你可以像這樣創建初始化參數:
<DefaultContext ...> ... <Parameter name="companyName" value="My Company, Incorporated" override="false"/> ... </DefaultContext>
<context-param> <param-name>companyName</param-name> <param-value>My Company, Incorporated</param-value> </context-param>
<Parameter>元素的有效屬性值如下:
description
關于該context初始化參數的文字描述(可選)
name
要創建的context初始化參數的名稱
override
如果不希望/WEB-INF/web.xml中具有相同參數名稱的<context-param>覆蓋這里指定的值,設為false。缺省值為true。
value
調用ServletContext.getInitParameter()時,返回給應用的參數值。
可以在Context中嵌套<Environment>元素,配置命名的值,這些值作為環境條目資源(Environment Entry Resource),對整個web應用可見。比如,可以按照如下方法創建一個環境條目: <DefaultContext ...> ... <Environment name="maxExemptions" value="10" type="java.lang.Integer" override="false"/> ... </DefaultContext> 這與在/WEB-INF/web.xml中包含如下元素是等價的: <env-entry> <env-entry-name>maxExemptions</param-name> <env-entry-value>10</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type> </env-entry> but does not require modification of the deployment descriptor to customize 區別是,前者不需要修改deployment descriptor來定制這個值。 <Environment>元素的有效屬性所如下: 屬性 描述 description 環境條目的文字描述(可選) name 環境條目的名稱,相對于java:comp/env context。 override 如果不希望/WEB-INF/web.xml中具有相同名稱的<env-entry>覆蓋這里指定的值,設為false。缺省值為true。 type 環境條目的Java類名的全稱.在/WEB-INF/web.xml中,<env-entry-type>必須是如下的值:java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, or java.lang.String. value 通過JNDI context請求時,返回給應用的參數值。這個值必須轉換成type屬性定義的Java類型
可以在Context中嵌套<Environment>元素,配置命名的值,這些值作為環境條目資源(Environment Entry Resource),對整個web應用可見。比如,可以按照如下方法創建一個環境條目:
<DefaultContext ...> ... <Environment name="maxExemptions" value="10" type="java.lang.Integer" override="false"/> ... </DefaultContext>
<env-entry> <env-entry-name>maxExemptions</param-name> <env-entry-value>10</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type> </env-entry>
but does not require modification of the deployment descriptor to customize 區別是,前者不需要修改deployment descriptor來定制這個值。
<Environment>元素的有效屬性所如下:
環境條目的文字描述(可選)
環境條目的名稱,相對于java:comp/env context。
如果不希望/WEB-INF/web.xml中具有相同名稱的<env-entry>覆蓋這里指定的值,設為false。缺省值為true。
type
環境條目的Java類名的全稱.在/WEB-INF/web.xml中,<env-entry-type>必須是如下的值:java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, or java.lang.String.
通過JNDI context請求時,返回給應用的參數值。這個值必須轉換成type屬性定義的Java類型
如果一個Java對象需要知道Context什么時候啟動,什么時候停止,可以在這個對象中嵌套一個Listener元素。該Listener元素必須實現了org.apache.catalina.LifecycleListener接口,在發生對應的生命期事件的時候,通知該Listener。可以按照如下的格式配置這樣的Listener: <DefaultContext ...> ... <Listener className="com.mycompany.mypackage.MyListener" ... > ... </DefaultContext> 注意,一個listener可以具有任意多的附加屬性。屬性名與JavaBean的屬性名相對應,使用標準的屬性命名方法。
如果一個Java對象需要知道Context什么時候啟動,什么時候停止,可以在這個對象中嵌套一個Listener元素。該Listener元素必須實現了org.apache.catalina.LifecycleListener接口,在發生對應的生命期事件的時候,通知該Listener。可以按照如下的格式配置這樣的Listener:
<DefaultContext ...> ... <Listener className="com.mycompany.mypackage.MyListener" ... > ... </DefaultContext>
注意,一個listener可以具有任意多的附加屬性。屬性名與JavaBean的屬性名相對應,使用標準的屬性命名方法。
可以在/WEB-INF/web.xml中定義資源的特性。使用JNDI查找<resource-ref>和<resource-env-ref>元素時,這些特性被返回。對同一資源名稱,還必須定義資源參數(見下面“資源參數”小節),這些參數用來配置對象工廠(object factory)以及對象工廠的屬性。 比如,你可以按照如下方式創建資源定義: <DefaultContext ...> ... <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" description="Employees Database for HR Applications"/> ... </DefaultContext> 這等價于在/WEB-INF/web.xml中包含如下元素: <resource-ref> <description>Employees Database for HR Applications</description> <res-ref-name>jdbc/EmployeeDB</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref> 區別是,前者不需要修改deployment descriptor來定制這個值。 <Resource>元素的有效屬性如下: 屬性 描述 auth 指定是web應用代碼本身sign on到對應的resource mananger,還是由container代表web應用sign on到resource manager。該屬性的值必須是Application或者Container。如果在web application deployment descriptor中使用<resource-ref>,這個屬性是必需的,如果使用<resource-env-ref>,這個屬性是可選的。 description 資源的文字描述(可選) name 資源的名稱,相對于java:comp/env context scope 指定通過這個resource manager得到的連接是否共享。該屬性的值必須是Shareable或者Unshareable。缺省情況下,假定連接是共享的。 type 當web應用查找該資源的時候,返回的Java類名的全稱。
可以在/WEB-INF/web.xml中定義資源的特性。使用JNDI查找<resource-ref>和<resource-env-ref>元素時,這些特性被返回。對同一資源名稱,還必須定義資源參數(見下面“資源參數”小節),這些參數用來配置對象工廠(object factory)以及對象工廠的屬性。
比如,你可以按照如下方式創建資源定義:
<DefaultContext ...> ... <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" description="Employees Database for HR Applications"/> ... </DefaultContext>
<resource-ref> <description>Employees Database for HR Applications</description> <res-ref-name>jdbc/EmployeeDB</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref>
<Resource>元素的有效屬性如下:
auth
指定是web應用代碼本身sign on到對應的resource mananger,還是由container代表web應用sign on到resource manager。該屬性的值必須是Application或者Container。如果在web application deployment descriptor中使用<resource-ref>,這個屬性是必需的,如果使用<resource-env-ref>,這個屬性是可選的。
資源的文字描述(可選)
資源的名稱,相對于java:comp/env context
scope
指定通過這個resource manager得到的連接是否共享。該屬性的值必須是Shareable或者Unshareable。缺省情況下,假定連接是共享的。
當web應用查找該資源的時候,返回的Java類名的全稱。
資源參數用來配置資源管理器(resource manager,或對象工廠,object factory)。在做JNDI查找時,資源管理器返回查找的對象。在資源可以被訪問之前,對<Context>或<DefaultContext>元素的每個<Resource>元素,或者/WEB-INF/web.xml中定義的每個<resource-ref>或<resource-env-ref>元素,都必須定義資源參數。 資源參數是用名稱定義的,使用的資源管理器(或者object factory)不同,參數名稱的集合也不一樣。這些參數名和工廠類的JavaBeans屬性相對應。JNDI實現通過調用對應的JavaBeans屬性設置函數來配置特定的工廠類,然后通過lookup()調用使得該實例可見。 一個JDBC數據源的資源參數可以按照如下方式定義: <DefaultContext ...> ... <ResourceParams name="jdbc/EmployeeDB"> <parameter> <name>driverClassName</name> <value>org.hsql.jdbcDriver</value> </parameter> <parameter> <name>driverName</name> </value>jdbc:HypersonicSQL:database</value> </parameter> <parameter> <name>user</name> <value>dbusername</value> </parameter> <parameter> <name>password</name> <value>dbpassword</value> </parameter> </ResourceParams> ... </DefaultContext> 如果你需要為某個特定的資源類型指定工廠內的Java類名,在<ResourceParams>元素中嵌套一個叫做factory的<parameter>條目。 <Resourceparams>元素的有效屬性如下: 屬性 描述 name 配置的資源名稱,相對于java:comp/env context。這個名稱必須與$CATALINA_HOME/conf/server.xml中某個<Resource>元素定義的資源名稱匹配,或者在/WEB-INF/web.xml中通過<resource-ref>或者<resource-env-ref>元素應用。
資源參數用來配置資源管理器(resource manager,或對象工廠,object factory)。在做JNDI查找時,資源管理器返回查找的對象。在資源可以被訪問之前,對<Context>或<DefaultContext>元素的每個<Resource>元素,或者/WEB-INF/web.xml中定義的每個<resource-ref>或<resource-env-ref>元素,都必須定義資源參數。
資源參數是用名稱定義的,使用的資源管理器(或者object factory)不同,參數名稱的集合也不一樣。這些參數名和工廠類的JavaBeans屬性相對應。JNDI實現通過調用對應的JavaBeans屬性設置函數來配置特定的工廠類,然后通過lookup()調用使得該實例可見。
一個JDBC數據源的資源參數可以按照如下方式定義:
<DefaultContext ...> ... <ResourceParams name="jdbc/EmployeeDB"> <parameter> <name>driverClassName</name> <value>org.hsql.jdbcDriver</value> </parameter> <parameter> <name>driverName</name> </value>jdbc:HypersonicSQL:database</value> </parameter> <parameter> <name>user</name> <value>dbusername</value> </parameter> <parameter> <name>password</name> <value>dbpassword</value> </parameter> </ResourceParams> ... </DefaultContext>
<Resourceparams>元素的有效屬性如下:
配置的資源名稱,相對于java:comp/env context。這個名稱必須與$CATALINA_HOME/conf/server.xml中某個<Resource>元素定義的資源名稱匹配,或者在/WEB-INF/web.xml中通過<resource-ref>或者<resource-env-ref>元素應用。
資源連接用于創建到全局JNDI資源的連接。在連接名稱上進行JNDI查詢會返回被連接的global 資源。 比如,你可以按照如下方法創建一個資源連接: <DefaultContext ...> ... <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer" ... </DefaultContext> <ResourceLink>元素的有效屬性如下: 屬性 描述 global 被連接的連接全局資源的名稱 name 創建的資源連接的名稱,相對于java:comp/env context type 當web應用在該資源連接上進行查找時,返回的Java類名的全稱
資源連接用于創建到全局JNDI資源的連接。在連接名稱上進行JNDI查詢會返回被連接的global 資源。 比如,你可以按照如下方法創建一個資源連接:
<DefaultContext ...> ... <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer" ... </DefaultContext>
<ResourceLink>元素的有效屬性如下:
global
被連接的連接全局資源的名稱
創建的資源連接的名稱,相對于java:comp/env context
當web應用在該資源連接上進行查找時,返回的Java類名的全稱