2011-11-28 19 views
12

これは私ののcontext.xmlファイルです:私はすでにリソース(「JDBC/MyDatasourceの」)の名前でServletContext.getResource(java.lang.String)を使用してみましたが、Tomcatは名前が始まらないと文句を言いtomcat webappのcontext.xmlファイルからリソースを取得する方法は?

... 
<Resource auth="Container" 
      driverClass="net.sourceforge.jtds.jdbc.Driver" 
      type="com.jolbox.bonecp.BoneCPDataSource" 
      idleMaxAge="240" 
      idleConnectionTestPeriod="60" 
      partitionCount="3" 
      acquireIncrement="1" 
      maxConnectionsPerPartition="10" 
      minConnectionsPerPartition="3" 
      statementsCacheSize="50" 
      releaseHelperThreads="4" 

      name="jdbc/MyDatasource" 
      username="my_username" 
      password="my_password" 
      factory="org.apache.naming.factory.BeanFactory" 
      jdbcUrl="jdbc:jtds:sqlserver://localhost:12345/my_database" 
/> 
... 

'/'。私も "/ jdbc/MyDatasource"で試しましたが、今回はnullを返します。

私は主に(サーバーがオンラインで動作しているかどうかを確認)データベース・サーバとの接続チェックを実行するためにjdbcUrlとを必要としています。

答えて

15

キーワードです:JNDI。 context.xmlのリソースは「システムリソース」ではなくJNDIリソースです。 これを試してみてください:

InitialContext ic = new InitialContext(); 
// that's everything from the context.xml and from the global configuration 
Context xmlContext = (Context) ic.lookup("java:comp/env"); 
DataSource myDatasource = (DataSource) xmlContext.lookup("jdbc/MyDatasource"); 

// now get a connection to see if everything is fine. 
Connection con = ds.getConnection(); 
// reaching this point means everything is fine. 
con.close(); 
+2

あなたの答えをありがとう。私はあなたが私を大いに助けてくれたので、答えを受け入れることを続ける方法を知らない...私はあなたがこのコミュニティに貢献し続ける(あなたが新しいユーザーであるので)あなたを励ますためのあなたの答えを受け入れるだろうと思う。 –

+0

@IgorPopov同じ質問がありますが、context.xmlから他のパラメータを読み取ろうとしています:maxTotal、maxIdleなどのように、どうやってそれらを実際にコンソールで印刷できるのですか?私は同じアプローチを使用しています。 context.xmlからこれらのパラメータを読み取る方法はありますか? –

+0

@HarshvardhanSolanki私が知っているわけではありません。しかし、あなた自身の質問としてフォローアップの質問をする必要があります。あなたの質問に答えられない場合は、既存の質問にリンクするようにしてください。そうすれば、あなた自身が解決しようとしています。 –

10

次のコードでデータソースにアクセスできるようにする必要があります

Context initialContext = new InitialContext(); 
Context envContext = (Context)initialContext.lookup("java:/comp/env"); 
DataSource ds = (DataSource)envContext.lookup("jdbc/MyDatasource"); 
+0

あなたの助けをありがとうございました:)私が間違った場所に最初の時間を探していたようでした。 Tomcatのコードサンプルが見つかりました:http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html –

+3

Tomcatでは、 "java:/ comp/env"を次のように変更してください。 "java:comp/env" – lmiguelmh

関連する問題