为Tomcat Webappconfiguration数据库属性

我在Tomcat中设置了一个示例应用程序,但是无法使数据库连接正常工作。 这是一个用Spring框架编写的标准WAR包,使用了一个MySQL数据库。

该应用程序是来自http://www.cumulogic.com/downloads/sample-applications/的Granny Address Book。

我已经在tomcat / webapps(在同一主机上运行MySQL 5.1.73的Tomcat 7.0.42)下部署它。

Mysql数据库名称 – grannydb JNDI名称 – 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> 

但是这个文件不是打包在webapp里面(它是单独的),它缺less一个数据库主机名。

我尝试将web.xml中的granny.xml放在WEB-INF/classes/META-INF/spring但是无法连接到数据库。

目前的行为是webapp正在启动,但catalina.out警告:

WARN:org.hibernate.cfg.SettingsFactory – 无法获取连接到查询元数据org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法创build用于连接URL的类“'的JDBC驱动程序null”

granny.xml应该放在哪里? 还有什么遗漏?

(是的,我已经在MySQL中创build了数据库和用户,应用程序没有创build表。

如果它使用JNDI,则需要在server.xmlcontext.xml设置数据库连接。

作为pipe理员,最好在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" /> 

希望这可以帮助。