配置 Tomcat Webapp 的数据库属性

配置 Tomcat Webapp 的数据库属性

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

该应用程序是奶奶通讯录http://www.cumulogic.com/downloads/sample-applications/

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

  • 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里面(它是单独提供的),而且它缺少数据库主机名。

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

当前行为是 Web 应用程序正在启动但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 中创建了数据库和用户。应用程序没有创建任何表。)

答案1

如果它使用 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" /> 

希望这可以帮助。

相关内容