用到tomcat连oracle数据库配连接池了,搞了一天,终于搞好了,其中也遇到了几个很棘手的问题,现在贴出来,以备后人学习,少走些弯路;(手工配置连接池)
环境:tomcat5.5,oracle9i;(tomcat5.5和tomcat5.0的在server.xml中的写法有些区别)
首先,在tomcat的xml文件中创建数据源;
%tomcat_root%/conf/server.xml
中:
在<host>...</host>中添加一下代码:
<!--pool-->
<Context path="/solarcn
" docBase="solarcn
" debug="5" reloadable="true" crossContext="true">
<Resource name="solar_ds
"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.25:1521:ora
"
username="solarcn
"
password="solarcn
"
maxActive="5"
maxIdle="10"
maxWait="5000"/>
</Context>
<!--//pool-->
--红色部分是需要你怎么更改的,现在挨个来解释下:
1.path="/solarcn" :这个是你的工程名的访问路径;
2.docBase="solarcn
":工程名;
3.Resource name="solar_ds
" :数据源的名;
4.url="jdbc:oracle:thin:@192.168.0.25:1521:ora
":数据库连接路径;
下面的数据库用户名密码就不用说了....
其次,在%tomcat_root%/conf/web.xml中引用数据源;
在最后的</webapp>前加入以下代码:
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>solar_ds
</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
红色部分就是数据源的名称,和上面server.xml中的 Resource name="solar_ds
"
相对应;
然后就是在程序中获得数据源了;
public static Connection getConn(){
Connection conn = null;
DataSource ds = null;
try {
Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
ds =(DataSource)envCtx.lookup("solar_ds
"); //获得数据源,红色名字与上面server.xml中的数据源名字对应
conn = ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
这样就获得了Connection...
这里要注意一点,数据源的名字要统一了,我在server.xml、web.xml和程序中都是用的"solar_ds"作为我的数据源名称;
=================================================================================
下面说一下在配置过程中遇到的几个比较棘手的问题,这几个问题是在配置连接池时的主要拦路虎,我百度了大半天,终于一一搞定了````
...
1.
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
--这是在初始化context时(Context envCtx = (Context)
ctx.lookup("java:comp/env");)抛出的异常;解决方法是把工程/WEB-INF/lib下面naming-
common.jar,naming-factory.jar,naming-resources.jar三个jar包删除;
2。
org.apache.tomcat.dbcp.dbcp.SQLNestedException:
Cannot create PoolableConnectionFactory (Io 异常: Connection
refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))))
--这是
在获得Connection的时候抛出的异常,前提是已经获得了数据源DataSource;出现这种情况是
无法创建连接池工厂对象,原因是连接被拒绝。
解决办法:检查建立数据源时(server.xml中)
url
字符串,可能服务器地址、端口、数据库名或者数据库实例名等信息错误。修改。
尤其着重检查url中url="jdbc:oracle:thin:@192.168.0.25:1521:ora
" 的ora,这个地方是数据库的实例名,而不是表空间的名字;
3。
Caused
by: java.sql.SQLException: Io 异常: Connection
refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
--出现这种异常一般是和第2种关联一块出现的,按第2步的方法一般就能解决;
对了,还有别忘了把oracle数据库的驱动classes12.jar放到tomcat下去...
到此,应该就会成功的配置好连接池了,可以自己建个jsp测试一下拉...
分享到:
相关推荐
Tomcat配置Oracle连接池.doc
tomcat下配置oracle的连接池配置,包括局部的连接池和全局的连接池
Tomcat下对Oracle 10g数据库连接池数据源的配置
介绍tomcat6.0中,配置oracle数据库连接池的步骤
tomcat 6.0如何配置虚拟目录?tomcat 6.0 不能列目录?
Tomcat连接池配置oracle,MSSQLserver数据库,以及在java应用程序的的引用,附带了 对应的jar包
Tomcat web应用中配置连接池的详细过程 这里以oracle数据库连接为例,如用到其他的其它数据库如 mysql sqlserver db2 等只需在相应的位置配置各数据库的驱动名称和对应的url 用户名 密码
Tomcat的数据库连接池设置与应用,用于Tomcat单独配置数据连接池。
Tomcat5.5连接池配置(oracle mysql sqlserver2000)
java 数据库 连接池 jsp mysql oracle jdbc tomcat
数据连接池的工作机制:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就...
tomcat 6.X 连接池的配置
十分简洁的一个oracle链接,内附驱动,并且有关于Tomcat连接池的使用方法。
下面介绍在Tomcat服务器下使用连接池来连接数据库的操作 一:修改web.xml文件: 代码如下: <?xml version=”1.0″ encoding=”UTF-8″?> <web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance...
详尽的数据库连接池配置方法,主要是利用tomcat6.0+oracle,利用第三方dbcp-jar包,可以取得当前连接数。
tomcat连接池配置+oracle,我搜集的资料,很实用!推荐推荐,这都是我用过的,呵呵!和大家一起分享
oracle9i连接的驱动下载 博文链接:https://zenghao.iteye.com/blog/237907
maxAction="20" //连接池的最大数据库连接数。设为0表示无限制。 maxldle="10" //最大空闲数 设为0表示无限制 maxWait="-1" //最大连接等待时间。如果超时将接到异常。设-1表示 无限制。 /> </Context>
入题,个人开发,保证能用