2013-03-14 3 views
0

я пытался сделать установить соединение с базой данных через DatabaseSource JNDI взгляд up.I следовать инструкциям на веб-сайте Tomcat и сделал, как показано нижеКак получить элементы ресурсов через объект контекста

Я добавил ресурс context.xml

<Resource name="jdbc/myDB" auth="Container" 
      type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" 
      url="jdbc:oracle:thin:111.111.111.111:1234:DBNME" 
      username="Dobby" password="pwd" maxActive="20" maxIdle="10" maxWait="-1"/> 

web.xml

<resource-ref> 
    <description>MY DataBase</description> 
    <res-ref-name>jdbc/myDB</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    </resource-ref> 

В коде

Context initContext = new InitialContext(); 
       DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/myDB"); 
       Connection con = ds.getConnection(); 

Если не удается установить соединение, я хочу, чтобы отобразить сообщение об ошибке с DB URL .Как я могу получить URL DB сконфигурированный в context.xml, в моем коде

+0

Можете ли вы объяснить, как принятый ответ решил вашу проблему? У меня есть ваш точный вопрос, но я не вижу, как заводская фаза, указанная в ответе, имеет значение. Вы закончили поиск и анализ фактического xml-файла? – rjcarr

ответ

1

Как вы заметили в примере apache, существует один класс MyBeanFactory. Из этого класса вы можете получить ресурсы из файла context.xml.

Необходимо проверить, что соединение установлено или нет в сервлете. Если соединение не установлено, введите значение URL из контекста.xml с помощью методов setter/getter и покажите сообщение об ошибке с URL-адресом.

Я делал то же самое с IP-адресом сервера и добился успеха. : D

Надеюсь, это поможет ...

0

Я не думаю, что это возможно, вы действительно используете JNDI, чтобы получить независимость от этих деталей, единственное, что у вас есть, и ведьма, которую вы можете добавить в свое сообщение об ошибке, - это имя ressource "java:/comp/env/jdbc/myDB". Парень, который сделал администрацию/конфиг, узнает подробности о DB-узлах, на которые это имя ссылается.

Обычно разработчик приложения просто определяет имя ресурса и передает его администратору Appserver-admin. Но при разработке вы должны/можете играть обе роли.

EDIT

Это конечно, если вы планируете использовать только интерфейс DataSource.

Если вы хотите настроить таргетинг на определенную СУБД, вы можете посмотреть на реализацию этого интерфейса, поставляемого с драйвером jdbc. Вот, например, реализация Oralce DataSource: OracleDataSource, подробная информация об этом here.

Смежные вопросы