1

重複の可能性:
web.xml の resource-ref は何に使用されますか?

context.xmlTomcatに次のタグを追加しました。

    <Resource name="jdbc/PollDatasource" auth="Container" type="javax.sql.DataSource"
    driverClassName="org.apache.derby.jdbc.ClientDriver" url="jdbc:derby://localhost:1527/poll_database;create=true"
    username="suhail" password="suhail" maxActive="20" maxIdle="10" maxWait="-1" />

サーバーが起動され、アプリケーションがデプロイされると、上記のタグが読み取られます。web.xml私はまた、私のプロジェクトに以下を追加しました:

 <resource-ref>
  <description>my connection</description>
  <res-ref-name>jdbc/PollDatasource</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

上記のタグは何を意味しますか?

私が次のようなステートメントを書くとき:

DataSource ds = (DataSource)envContext.lookup("jdbc/PollDatasource")

context.xmlサーバーのを直接調べていませんか?私は間違っていることを知っています.この場合、resource-refタグが何を意味するのか理解するのを手伝ってくださいweb.xml?

4

2 に答える 2

2

これは、Web アプリケーションが特定の名前やその他の属性を持つ JNDI リソースにアクセスできることを期待する「ヒント」またはライブ ドキュメントを意味していると思います。context.xml ファイルは Tomcat アーティファクトであり、多くのアプリケーション サーバーに Tomcat エンジンが組み込まれていますが、普遍的とは言えません。

于 2012-07-18T18:07:34.383 に答える
2

次のコードで検索する必要があります

DataSource ds = (DataSource)envContext.lookup("java:comp/env/jdbc/PollDatasource");

Web アプリケーション内で、

JNDI コンテキストは、アプリケーション内とアプリケーション外 (この場合は、リソースを定義した context.xml 内) で異なります。

resouce-ref セクションで定義されたすべてのリソースは、アプリケーションの環境コンテキストにマップされます。したがって、アプリケーションはそれらのリソースにアクセスできます。アプリケーション コンテキストとコンテナー コンテキスト間の相互参照は、展開時に行われます。

于 2012-07-18T19:34:13.600 に答える