Почему это работает? JNDI, Tomcat6 - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь переместить всю информацию базы данных из проектов, чтобы SA мог настроить серверы и переместить ту же WAR из DEV-> QA-> PROD, не меняя ничего в файлах WAR. Мы устанавливаем JNDI для базы данных MySQL на tomcat6.

Добавьте следующее в server.xml

<Resource name="jdbc/mi" auth="Container" type="javax.sql.DataSource"
              username="xxx" password="xxx"
              url="jdbc:mysql://xx"
              driverClassName="com.mysql.jdbc.Driver"
              initialSize="5" maxWait="5000"
              maxActive="120" maxIdle="5"
              validationQuery="select 1"
              poolPreparedStatements="true"/>

Но проект работает неправильно. Я получаю следующую ошибку:

Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

если я установлю /META-INF/context.xml с той же информацией в моем проекте, все будет работать отлично, но SA не хочет информацию о сервере в моей войне. что это может быть?? может кто-нибудь, пожалуйста, помогите мне в этом ... Я ищу по всему интернету и пробовал все, но ничего не работает .., пожалуйста, помогите программисту!

Ответы [ 3 ]

1 голос
/ 23 марта 2012

В вашем context.xml вам нужна ссылка на ресурс, чтобы приложение могло глобально искать ресурс.

<ResourceLink name="jdbc/mi" global="jdbc/mi"/>
1 голос
/ 24 марта 2012

В дополнение к вышеприведенным ответам вам необходимо убедиться, что библиотека JDBC для вашей БД размещена в папке $ {TOMCAT_HOME} / lib.

1 голос
/ 23 марта 2012

Вы установили WEB-INF/web.xml в своем проекте? Он должен содержать что-то вроде этого

<resource-env-ref>
    <resource-env-ref-name>jdbc/mi</resource-env-ref-name>
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>

Вы не упомянули об этом в своем вопросе, поэтому он может отсутствовать. См. Эту документацию по Java и Tomcat6 'one

...