PostgreSQL 配置與 Oracle 基本相似。
將 Postgres 的 JDBC jar 文件復制到 $CATALINA_HOME/lib 中。和 Oracle 配置一樣,jar 文件必須放在這個目錄中,DBCP 類加載器才能找到它們。不管接下來如何配置,這是首先必須要做的。
目前有兩種選擇:定義一個能夠被 Tomcat 所有應用所共享的數據源,或者定義只能被單個應用所使用的數據源。
如果想定義能夠被多個 Tomcat 應用所共享的數據源,或者只想在文件中定義自己的數據源,則采用如下配置:
盡管有些用戶反饋說這樣可行,但本文檔作者卻沒有成功,希望有人能闡述清楚。
如果希望專門為某一應用定義數據源,其他 Tomcat 應用無法使用,可以使用如下配置。這種方法對 Tomcat 安裝的損害性要小一些。
在你的應用的 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>
<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>
訪問數據庫
在利用程序訪問數據庫時,記住把 java:/comp/env 放在你的 JNDI lookup 方法參數的前部,如下面這段代碼所示。另外,可以用任何你想用的值來替換 jdbc/postgres,不過記得也要用同樣的值來修改上面的資源定義文件。
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!");
}