进行实际业务开发时,如果使用的不是专用的应用服务器与数据库服务器,那么往往是在网络上租用一个虚拟的服务器空间,将WEB应用的war包放入服务器空间内,将数据库相关信息放入指定的数据库服务器空间内。
当应用启动时,会根据使用需要创建对应的数据库连接对象。但是如果该服务器上WEB应用过多时,每个WEB应用都有自己的数据库连接管理方式。而WEB服务器连接的数据库地址又唯一。此时如果数据库服务器进行迁移,会造成大多数WEB应用无法正常工作。
比较合理的解决方案是将Tomcat服务器与数据库服务器的连接关系进行统一配置,所有的应用都使用该配置,这样就不会造成数据库服务器迁移导致应用无法正常工作的现象。如果用户连接的是专用数据库服务器,即便上述操作修改,也不会产生影响。
Tomcat数据源 是一种将数据库的连接配置信息在服务器端(客户端独立配置)进行配置,当服务器启动时,创建该对象。用户只需要根据对应的名称进行获取就可以了。
配置Tomcat数据源
- 修改tomcat安装目录/conf/context.xml,添加如下配置
|
|
配置Web应用使用Tomcat数据源
- 修改WEB-INF/web.xml,添加如下配置
|
|
配置Spring核心配置文件中使用数据源
- 开启jee命名空间
|
|
- 使用jee命名空间
|
|
- 重启服务器,测试功能。测试通过,可以正常登陆
[知识总结]
有关数据源对象的配置方式有很多种,此处仅为其中一种开发方式,而且此方式没有强依赖关系(其他配置方式中存在)。
JNDI :(Java Naming and Directory Interface)Java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口,一个应用程序设计的API,它为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI名是远端访问的通用名称,可以理解为使用该名称获取对应的资源信息。
JNDI的命名官方规范=> java:comp/env/JNDI名称
Jboss=> java:JNDI名称
Weblogic=> JNDI名称
[开发技巧]
数据源在配置时,如果是绑定项目的,需要将数据库驱动jar包拷贝到tomcat的lib包下,否则服务器加载时无法找到驱动包,抛出异常
JNDI规范是J2EE标准定义,但是不同服务器厂商的定义规则有所不同,使用时需要进行区分对待
在进行测试功能的执行时,由于SessionFactory仍然需要加载,而此时服务器无需启动,造成DataSource对应的Bean无法加载,抛出异常。推荐开发阶段使用原始的DataSource,上线后修改为服务器数据源。