我在Tomcat中设置了一个示例应用程序,但在数据库连接的工作中遇到了问题。它是用Spring框架编写的标准WAR包,使用MySQL数据库。
应用程序是来自http://www.cumulogic.com/downloads/sample-applications/的“奶奶通讯录”。
我已经在tomcat/webapps/ (Tomcat7.0.42)下部署了它,MySQL 5.1.73运行在同一台主机上。
grannydbMySqlGBDS我无法定位数据库连接设置的位置,因为它没有通常的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中(它是分开的),而且它没有数据库主机名。
我试着把granny.xml放在WEB-INF/classes/META-INF/spring/下的webapp应用程序中,但是它无法连接到数据库。
当前的行为是webapp正在启动,但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中创建了数据库和用户。该应用程序没有创建任何表。)
发布于 2016-01-25 07:52:37
如果它使用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" /> 希望这能有所帮助。
https://serverfault.com/questions/751303
复制相似问题