- - PR -
ServletからのContextパラメータの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-04 11:23
Tomcat 5.0.28でservletからのDB接続パラメータをContextからの取得にしたいの
ですが、うまくいきません。 テスト的に [server.xmlの記述] <GlobalNamingResources> <Resource name="jdbc/dual" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/dual"> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>username</name> <value>scott</value> </parameter> <parameter> <name>password</name> <value>tiger</value> </parameter> <parameter> <name>url</name> <value>"jdbc:oracle:thin:@172.16.2.15:1521:oradb"</value> </parameter> </ResourceParams> <GlobalNamingResources> [web.xmlの記述] <resource-ref> <res-ref-name>jdbc/dual</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>CONTAINER</res-auth> </resource-ref> </web-app> [テストのjavaコード] try { Context context = new InitialContext(); out.println("context=" + context + "<br>"); DataSource ds = (DataSource)context.lookup( "java:comp/env/jdbc/dual"); out.println("ds= " + ds + "<br>"); org.apache.commons.dbcp.BasicDataSource bd = (org.apache.commons.dbcp.BasicDataSource) ds; out.println("DriverClassName=" + bd.getDriverClassName() + "<br>" ); out.println("url=" + bd.getUrl() + "<br>" ); out.println("user=" + bd.getUsername() + "<br>"); out.println("password=" + bd.getPassword() + "<br>" ); Connection con = ds.getConnection(); out.println("con=" + con + "<br>"); } catch (NamingException e) { e.printStackTrace(out); } catch (SQLException e) { e.printStackTrace(out); } で実行すると context=javax.naming.InitialContext@1342545 ds= org.apache.commons.dbcp.BasicDataSource@7b1641 DriverClassName=null url=null user=null password=null org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) at tp1.doIt(tp1.java:45) at tp1.doGet(tp1.java:13) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at 〜以下トレース となります。 ContextからのlookupはOKだけど、中身がはいっていないです。 ・<GlobalNamingResources>に書いてるのでweb.xmlの記述をとった。 ・Tomcat Adminから定義した。 でも同じ現象となります。 どこが悪いでしょう? |
1