Доброго времени суток, соответсвенно всем! Моя среда: Tomcat 8.5 под Windows 64-бит Все необходимые jar-файлы помещаются в $ CATALINA_HOME / lib.
Это моя первая попытка написать сервлет с использованием ConnectionPool. После "поиска в Google" я сделал запись в $ CATALINA_HOME / conf / server.xml:
<context docbase = "msgsend" path = "/msgsend" reloadable = "true">
<context docbase = "ssr" path = "/ssr" reloadable = "true">
<Resource
name = "jdbc/OrServlet"
auth = "Container"
type = "javax.sql.DataSource"
user = "STERN"
username = "STERN"
password = "pwdxxx"
driverClassName = "oracle.jdbc.OracleDriver"
url = "jdbc:oracle:thin:STERN/pwdxxx@XEPDB1"
/>
</context>
Я включил в WEb-INF / web.xml следующее:
<resource-ref>
<description>just a test</description>
<res-ref-name>jdbc/OrServlet</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Когда я пытаюсь подключиться к Oracle традиционным способом:
try {
cn = DriverManager.getConnection(
"jdbc:oracle:thin:@XEPDB1", "STERN", "pwdxx");
}
catch (Exception e) { }
все работает нормально.
Но когда я пытаюсь подключиться через контекст:
Connection cn = null;
DataSource ds = null;
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
ds = (DataSource)envCtx.lookup("jdbc/OrServlet");
cn = ds.getConnection();
}
catch(NamingException n) {}
catch(SQLException s) {out.println(ds.getClass().getName()+" exception "+s);
;}
Я получил :
**exception java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'**
и ds.getClass (). getName () в обработчике исключений возвращает: org.apache.tomcat.dbcp.dbcp2.BasicDataSource
который отличается от javax.sql.DataSource, как объявлено в а также .
И мне кажется, что ds = (DataSource) envCtx.lookup ("jdbc / OrServlet") wvwn не пытается заглянуть в раздел ресурсов.
Что я упустил? Любая помощь будет очень признательна.
С уважением, Андрей.
Петр, да. Внезапно я нашел решение - скопировав раздел ресурсов в <GlobalNamingResources> часть server.xml + создав элемент <ResourceLiink> в $ CATALINA_HOME / conf / context.xml и создав файл context.xml.default с содержимым моего контекста приложения в каталог $ CATALINA_HOME / conf / catalina / localhost. Какая часть этих шагов сыграла положительную роль, я не знаю и даже не хочу знать :-), потому что чувствую себя слишком уставшим от этой скучной конфигурации.
С
driverClassName = "oracle.jdbc.driver.OracleDriver"
пробовали?