Назад | Перейти на главную страницу

Настройка свойств базы данных для Tomcat Webapp

Я устанавливаю пример приложения в Tomcat, но не могу установить соединение с базой данных. Это стандартный пакет WAR, написанный на платформе Spring и использующий базу данных MySQL.

Приложение является Адресная книга бабушки из http://www.cumulogic.com/downloads/sample-applications/.

Я развернул его под tomcat/webapps/ (Tomcat 7.0.42 с MySQL 5.1.73 работает на том же хосте.)

Я не могу найти, где разместить параметры подключения к базе данных, так как в нем нет обычного database.properties файл. Единственная ссылка на настройки базы данных находится в granny.xml:

<database>
  <engine>MySQL-5.5.27</engine>
  <no-of-nodes>1</no-of-nodes>
  <storage>10</storage>
  <config>
    <master-username>demo</master-username>
    <master-password>demodemo</master-password>
    <port>3306</port>
    <character-set>UTF-8</character-set>
  </config>       <external-host></external-host>
</database>

Но этот файл не упакован внутри веб-приложения (он поставляется отдельно), и ему не хватает имени хоста базы данных.

Я пробовал разместить granny.xml внутри веб-приложения под WEB-INF/classes/META-INF/spring/ но он не может подключиться к базе данных.

Текущее поведение - веб-приложение запускается, но catalina.out предупреждает:

 WARN : org.hibernate.cfg.SettingsFactory - Could not obtain connection
 to query metadata org.apache.tomcat.dbcp.dbcp.SQLNestedException:
 Cannot create JDBC driver of class '' for connect URL 'null'

Где следует granny.xml быть помещенным?
Чего еще не хватает?

(Да, я уже создал базу данных и пользователя в MySQL. Приложение не создает таблицы.)

Если он использует JNDI, вам необходимо настроить соединение с базой данных в любом server.xml или context.xml.

Как администратору лучше настроить подключение к базе данных в server.xml, иначе вам придется распаковывать и упаковывать WAR-файл перед каждым развертыванием.

Откройте server.xml. Должен быть раздел под названием GlobalNamingResources. Здесь вы добавляете подключение к базе данных.

<Resource auth="Container" 
          driverClassName="com.mysql.jdbc.Driver" 
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"  
          validationQuery="/* ping */"
          testOnBorrow="true"
          name="jdbc/MySqlGBDS" 
          username="<username>"
          password="<password>" 
          type="javax.sql.DataSource" 
          url="jdbc:mysql://<ipaddress>/grannydb" /> 

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