Когда я пытаюсь выполнить следующий поиск в моем коде:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
return (DataSource) envCtx.lookup("jdbc/mydb");
Я получаю следующее исключение:
java.sql.SQLException: QueryResults: Unable to initialize naming context:
Name java:comp is not bound in this Context at
com.onsitemanager.database.ThreadLocalConnection.getConnection
(ThreadLocalConnection.java:130) at
...
Я установил встроенный JBoss, следуя вики-инструкциям JBoss . И я настроил Tomcat, используя развертывание «Сканирование каждой WAR по умолчанию», как указано на странице конфигурации .
Цитирование страницы конфигурации:
JNDI
Встроенные компоненты JBoss, такие как пул соединений, EJB, JPA и транзакции
широкое использование JNDI для публикации услуг. Встроенный JBoss переопределяет JNDI Tomcat
реализация путем наложения себя поверх реализации JNDI Tomcat. Для этого есть несколько причин:
- Чтобы не объявлять каждую из этих служб в server.xml
- Чтобы разрешить невидимую интеграцию пространства имен java: comp между веб-приложениями и
EJBs.
- В реализации Tomcat JNDI есть несколько критических ошибок, которые мешают некоторым JBoss
работоспособность компонентов
- Мы хотим предоставить вам возможность удаленного взаимодействия EJB-компонентов и других служб, которые можно> удаленно искать
У кого-нибудь есть мысли о том, как настроить службу именования JBoss, которая в соответствии с приведенной выше цитатой переопределяет реализацию JNDI Tomcat, чтобы я мог найти java: comp / env?
К вашему сведению - Моя среда Tomcat 5.5.9, Seam 2.0.2sp, встроенный JBoss (бета-версия 3),
Примечание. У меня действительно есть файл -ds.xml для подключения к базе данных, который правильно настроен и доступен по пути классов в соответствии с инструкциями.
Также обратите внимание: я разместил этот вопрос на встроенном форуме Jboss и форуме пользователей seam.