Tomcat的数据库缓冲池配置JNDI;为了降低数据库连接消耗的内存资源,建立缓冲池。
Tomcat8,jre1.7,数据库MySQL
Tomcat8.0手册
http://localhost:8080/docs/jndi-resources-howto.html
http://localhost:8080/docs/jndi-datasource-examples-howto.html
配置过程:1:将mysql-connector-java-5.1.26-bin.jar驱动jar包复制到Tomcat安装目录的lib目录下E:\Apache\Tomcat8.0\lib
2:修改Tomcat的启动配置文件E:\Apache\Tomcat8.0\conf\server.xml
在server.xml的末尾处的</host>前添加:youProgrameNae指您的工程名,我这里是web 工程
youDataBaseName指您的数据库名字,请您读一读,就知道怎么配置了。
<Context path="/youProgrameNae" docBase="youProgrameNae" debug="5" reloadable="true" crossContext="true" >
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="youMysqlName"
password="youMysqlPassword"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/youDataBaseName?autoReconnect=true"/>
</Context>
</Host>
</Engine>
</Service>
</Server>
3:在youProgrameNae的web.xml文件后面添加<resource-ref></resource-ref>等,请您对比添加,这里的name需要和上面的name对应
</welcome-file-list>
<resource-ref>
<description>MySQL DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
4:下面我使用hibernate配置连接到数据库 hibernate.cfg.xml
hibernate.cfg.xml文件修改数据库连接的来源,可以看到,连接配置主要是
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/mysql</property>
这一句话。java:/comp/env/是固定写法 jdbc/mysql 可以修改,但几乎也是固定写法;下面是完整的hibernate.cfg.xml配置
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--
<property name="connection.url">jdbc:mysql://localhost:3306/sjia</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
-->
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/mysql</property>
<property name="hibernate.show_sql">true</property>
<!-- <mapping resource="com/SJia/Bean/user.hbm.xml" /> -->
</session-factory>
</hibernate-configuration>
5:hibernate连接数据库缓冲池编程测试
public class hibernate_connect {
public Session getSession()
{
Configuration cfg=new Configuration();//初始化配置文件类
cfg.configure();//配置方法
SessionFactory sf=cfg.buildSessionFactory();
Session session=sf.openSession();
return session;
}
}
写一个servlet类 TestJNDI
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
hibernate_connect hiconn=new hibernate_connect();
Session session=hiconn.getSession();
System.out.println("-------------");
//http://localhost:8080/docs/jndi-datasource-examples-howto.html
//在jdbc数据源里面配置的
System.out.println(session);
}
浏览器直接访问
//http://localhost:8080/yourProgrameNane/TestJDNI
后台打印
可以看出,配置成功。
原理是tomcat启动时,server.xml配置了连接数据库名和密码等,name='java/mysql';web.xml配置了name='jdbc/mysql'
hibernate配置文件的连接设置更改了,为name='jdbc/mysql';;web.xml不添加配置似乎也可以,但是没人愿意这样吧。。
我这个项目是一个网站收藏夹的小demo,里面有数据库的注册,需要的可以下载参考。
主要是servlet和jsp的tag标签,包含软件设计的分层解耦设计思想,hibernate的配置,jdbc的持久化配置,jndi配置。
我就附上下载地址,为了自己以后查看吧。
算了,需要的留言,以后才上传