PostgreSQL 配置與 Oracle 基本相似。
將 Postgres 的 JDBC jar 文件復(fù)制到 $CATALINA_HOME/lib 中。和 Oracle 配置一樣,jar 文件必須放在這個(gè)目錄中,DBCP 類加載器才能找到它們。不管接下來(lái)如何配置,這是首先必須要做的。
目前有兩種選擇:定義一個(gè)能夠被 Tomcat 所有應(yīng)用所共享的數(shù)據(jù)源,或者定義只能被單個(gè)應(yīng)用所使用的數(shù)據(jù)源。
如果想定義能夠被多個(gè) Tomcat 應(yīng)用所共享的數(shù)據(jù)源,或者只想在文件中定義自己的數(shù)據(jù)源,則采用如下配置:
盡管有些用戶反饋說(shuō)這樣可行,但本文檔作者卻沒(méi)有成功,希望有人能闡述清楚。
如果希望專門(mén)為某一應(yīng)用定義數(shù)據(jù)源,其他 Tomcat 應(yīng)用無(wú)法使用,可以使用如下配置。這種方法對(duì) Tomcat 安裝的損害性要小一些。
在你的應(yīng)用的 Context 中創(chuàng)建一個(gè)資源定義,如下所示:
<Resource name="jdbc/postgres" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/mydb"
username="myuser" password="mypasswd" maxTotal="20" maxIdle="10" maxWaitMillis="-1"/>
<Context>
<Resource name="jdbc/postgres" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/mydb"
username="myuser" password="mypasswd" maxTotal="20" maxIdle="10"maxWaitMillis="-1"/></Context>
訪問(wèn)數(shù)據(jù)庫(kù)
在利用程序訪問(wèn)數(shù)據(jù)庫(kù)時(shí),記住把 java:/comp/env 放在你的 JNDI lookup 方法參數(shù)的前部,如下面這段代碼所示。另外,可以用任何你想用的值來(lái)替換 jdbc/postgres,不過(guò)記得也要用同樣的值來(lái)修改上面的資源定義文件。
InitialContext cxt = new?InitialContext();if?( cxt == null?) {
???throw?new?Exception("Uh oh -- no context!")
}
DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres"?);
if?( ds == null?) {
???throw?new?Exception("Data source not found!");
}