Я устанавливаю пример приложения в Tomcat, но не могу установить соединение с базой данных. Это стандартный пакет WAR, написанный на платформе Spring и использующий базу данных MySQL.
Приложение является Адресная книга бабушки из http://www.cumulogic.com/downloads/sample-applications/.
Я развернул его под tomcat/webapps/
(Tomcat 7.0.42 с MySQL 5.1.73 работает на том же хосте.)
grannydb
MySqlGBDS
Я не могу найти, где разместить параметры подключения к базе данных, так как в нем нет обычного 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" />
Надеюсь это поможет.