Размещение тега Resource в файле conf/context.xml приводит к исключению, но это нормально, когда я помещаю его в META-INF/context.xml: почему это так?

Чтобы подключиться к базе данных derby, используя tomcat в качестве сервера, я добавил следующее 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-ref тег в web.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'

Я еще не понял причину этого исключения.

После исключения я удалил Resource тег из conf/context.xml Tomcat и поместил его в META-INF/context.xml моего проекта.

Когда я снова попробовал сервлет, он работал без каких-либо исключений!

Что может быть причиной того, что я получаю исключение, когда я помещаю Resource тег внутри глобального файла context.xml (то есть внутри conf/context.xml), но не получаю исключение, когда я помещаю его в context.xml, специфичный для моего приложения? (т.е. внутри META-INF/context.xml)

1 ответ

Добавление <Resource> в conf/context.xml сделает копию этого ресурса доступной для каждого веб-приложения, которое вы развертываете на своем сервере - вероятно, не то, что вы хотите сделать. Если вы хотите <Resource> чтобы быть глобально доступным, более уместно поместить его в conf/server.xml под <GlobalNamiongResources>,

Я ожидаю, что ошибка, которую вы получаете, заключается в том, что у вас нет нужного драйвера JDBC. Определение <Resource> в conf/context.xml может привести к использованию другого ClassLoader для загрузки вашего <Resource>,

Другие вопросы по тегам