Ваше мнение важно для нас.
Поделитесь своими предоложениями и пожеланиями.

Вызов context.lookup приводит к ошибке, не удается найти jdbc/testDB.


Привет, я использую Tomcat 4.1.31 для создания веб-приложения. Мне необходимо подключиться к базе данных, для этого я использую следующий код:
try {
Context context = new InitialContext();
DataSource datasource = (DataSource) context.lookup("java:comp/env/jdbc/testDB");
try {
Connection conn = datasource.getConnection();
} catch (SQLException sqlex) {
LOG.debug("Unable to open database connection. " + sqlex.getMessage());
}
} catch (NamingException ne) {
LOG.debug("Unable to lookup datasource. " + ne.getMessage());
}

Но в методе context.lookup возникает ошибка, не удается найти jdbc/testDB. Как это исправить?
0

Ответы

2
Ссылка
Для того, чтобы ресурс мог быть найден через JNDI его сначала нужно объявить в 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/testDB"
username="my_username"
password="my_password"
factory="org.apache.naming.factory.BeanFactory"
jdbcUrl="jdbc:jtds:sqlserver://localhost:12345/testDB"
/>

и в web.xml:
<resource-ref>
<description>mySQL Datasource</description>
<res-ref-name>jdbc/testDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

0
Ссылка
Большое спасибо, за быстрый ответ. Помогло.
Для того, чтоб отвечать на вопросы или зарегистрируйтесь.
ИТ-цитата
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный"."
Кен Томпсон