2012-03-23 2 views
0

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

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

ответ

1

Вы установили 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 documentation и the Tomcat6' one

1

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

<ResourceLink name="jdbc/mi" global="jdbc/mi"/> 
1

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