0

最初にサーバーとして tomcat を使用して derby データベースに接続するためにconf/context.xml、Tomcatに以下を追加しました。

<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" />

およびプロジェクトのResource-refweb.xml のタグ。WEB-INF/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>

しかし、データベースに接続する必要があるサーブレットを実行すると、次のステートメントが表示されます。

connection = dataSource.getConnection();

例外が発生しました:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

この例外の理由はまだわかりません

例外の後、TomcatResourceからタグを削除し、プロジェクトの に配置しました。conf/context.xmlMETA-INF/context.xml

サーブレットを再試行したところ、例外なく機能しました。

Resourceタグをグローバル context.xml ファイル内(つまり、conf/context.xml 内)に配置すると例外が発生するのに、アプリケーション固有の context.xml内にタグを配置すると例外が発生しない理由は何でしょうか? ?. (つまり、META-INF/context.xml 内)

4

1 に答える 1

0

に追加<Resource>するconf/context.xmlと、サーバーにデプロイするすべての webapp でそのリソースのコピーを使用できるようになります。これは、おそらくやりたいことではありません。<Resource>をグローバルに利用できるようにしたい場合は、 のconf/server.xml下に配置する方が適切<GlobalNamiongResources>です。

JDBC ドライバーが適切な場所にないため、エラーが発生していると思います。<Resource>inを定義するconf/context.xmlと、別の ClassLoader を使用して<Resource>.

于 2012-07-21T18:28:55.800 に答える