1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Tomcat数据库连接池的配置方法总结(叶涛为您解答)

Tomcat数据库连接池的配置方法总结(叶涛为您解答)

时间:2020-11-08 07:50:18

相关推荐

Tomcat数据库连接池的配置方法总结(叶涛为您解答)

实例使用的Tomcat版本为6.0

方法一:Tomcat的conf/context.xml中配置

在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下:

<?xml version='1.0' encoding='utf-8'?><Context><WatchedResource>WEB-INF/web.xml</WatchedResource></Context>

配置连接池

<?xml version='1.0' encoding='utf-8'?><Context><WatchedResource>WEB-INF/web.xml</WatchedResource><!--配置oracle数据库的连接池--><Resource name="jdbc/oracleds"author="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10000"username="scott"password="tiger"driverClassName="oracle.jdbc.dirver.OracleDriver"url="jdbc:oracle:thin:@127.0.0.1:1521:ora9" /><!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下 maxIdle 连接池中最多可空闲maxIdle个连接 minIdle 连接池中最少空闲maxIdle个连接 initialSize 初始化连接数目 maxWait 连接池中连接用完时,新的请求等待时间,毫秒 username 数据库用户名password 数据库密码--><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog" /></Context>

配置好后需要注意的两个步骤

1.将对应数据库的驱动类放到tomcat的lib目录西安

2.重新启动tomcat服务器,让配置生效

在web应用程序的web.xml中设置数据源参考,如下:

在<web-app></web-app>节点中加入下面内容

<resource-ref><description>mysql数据库连接池</description><!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 --><res-ref-name>jdbc/mysqlds</res-ref-name><!-- 资源类型 --><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth><res-sharing-scope>Shareable</res-sharing-scope></resource-ref>

错误解决

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initialat javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)at javax.naming.InitialContext.lookup(InitialContext.java:392)at com.iblog.util.DBPoolUtil.<clinit>(DBPoolUtil.java:34)

解决方案:

上面的异常信息是配置文件中JNDI没有初始化造成的

如果下面的问题都不存在

1.要去检查下配置文件中连接数据库的URL参数是否正确2.以及是否导入了正常的包3.检查在Tomcat中conf/server.xml文件,检查是否设置useNaming="false",如果是,去掉

2.那就是通过main方法测试的,这个数据源不支持这样的测试方法,程序要运行在Tomcat中才能找到相应的数据源.[我在测试时犯这样的错导致上面错误出现]

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><%@ page import="java.sql.*" %><%@ page import="javax.naming.*" %><%@ page import="javax.sql.DataSource" %><html><head><title>Tomcat6.0 JNDI!</title> </head> <body>Tomcat连接池测试,获取数据源 <br><%try {//初始化查找命名空间Context ctx = new InitialContext(); //参数java:/comp/env为固定路径 Context envContext = (Context)ctx.lookup("java:/comp/env"); //参数jdbc/mysqlds为数据源和JNDI绑定的名字DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds"); Connection conn = ds.getConnection();conn.close();out.println("<span style='color:red;'>JNDI测试成功<span>");} catch (NamingException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}%></body></html>

运行效果:

方法二:Tomcat的conf/server.xml中配置

打开tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>节点,默认的内容如下

<GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources>

在该节点中加入相关的池配置信息,如下

<GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /><!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下 --><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog" /></GlobalNamingResources>

在tomcat的conf/context.xml文件中的<Context></Context>节点中加入如下内容

<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>

然后在web项目中的WEB-INF目录下的web.xml中配置

<resource-ref><description>mysql数据库连接池</description><!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 --><res-ref-name>jdbc/mysqlds</res-ref-name><!-- 资源类型 --><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth><res-sharing-scope>Shareable</res-sharing-scope></resource-ref>

同样配置好后,需要重新启动服务器,让配置生效.

方法三:在Tomcat的conf/server.xml中配置虚拟目录时配置

在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内添加池配置.

在说该方法之前,先说一下,如何用tomcat配置虚拟目录

在tomcat\conf下server.xml中找到

<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"></Host>

在其中添加:

<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>

注意:

docBase要改成你的项目目录。

path为虚拟路径,访问时的路径,注意:一定要加“/”debug建议设置为0

reloadable设置为true。

这样重新启动tomcat

实例中如下配置

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"></Context>

接下来添加池配置,如下

<!--配置虚拟目录--><Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog"/></Context>

启动服务器,测试,注意因为我们配置了path值为”/website”,所以访问的路径应该为website.如下图:

方法四:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置

注意:是META-INF目录下,不是WEB-INF目录下

<?xml version='1.0' encoding='utf-8'?><Context><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog"logAbandoned="true" /></Context>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。