Tomcat6.0.18下配置proxool0.9.1 jndi连接池for Oracle10g及使用方法

分为4

1、下载proxool0.9.1 的proxool-0.9.1.jar ,proxool-cglib.jar ,ojdbc14.jarcommons-logging.jar 保存到tomcat\lib 下(tomcat5.x是 common\lib 下)

2、编辑tomcat\conf\server.xml :

......

<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" />

<Resource name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
factory="org.logicalcobwebs.proxool.ProxoolDataSource"
proxool.alias="orale10g"
user="username"
password="password"
delegateProperties="foo=1,bar=true"
proxool.jndi-name="myjndi"
proxool.driver-url="jdbc:oracle:thin:@127.0.0.1:1521:oracledb"
proxool.driver-class="oracle.jdbc.driver.OracleDriver"
proxool.house-keeping-sleep-time="900000"
proxool.maximum-active-time="5"
proxool.prototype-count="3"
proxool.statistics="1m,15m,1d"
proxool.simultaneous-build-throttle="10"
proxool.minimum-connection-count="5"
proxool.maximum-connection-count="15"
proxool.house-keeping-test-sql="select CURRENT_DATE from dual"
proxool.test-before-use="true"/>
</GlobalNamingResources>

.............

<Context path="/yourapp" docBase="D:/apache-tomcat-6.0.18/webapps/yourapp" debug="0" reloadable="true" crossContext="true">
<ResourceLink name="jdbc/mydatasource" global="jdbc/mydatasource" type="javax.sql.DataSource"/>
</Context>

...........

3、在你应用下的web.xml 中加入:

.......

<resource-ref>
<description>JNDI JDBC DataSource of project-jsp</description>
<res-ref-name>jdbc/mydatasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

.......................

4、调用场景:

I>spring+struts+hibernate下,配置application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd ">
<beans>

 

<bean id="jndiDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mydatasource</value>
</property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="jndiDataSource"/>
</property>

<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/test/contact/model/</value>...
</list>
</property>

<!-- 配置Hibernate属性 -->
<property name="hibernateProperties">

<props>
<!-- 配置连接池 -->
<propkey="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>

<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>

<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="Hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<!-- 重要的设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数 -->
<prop key="hibernate.fetch_size">50</prop>
<!-- Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思 -->
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>

</bean>

..........

</beans>

 

II>直接在应用中使用 和普通的jndi调用一样简单,以下示例在jsp或servelet都是相似的用法

test.jsp

<%@pagelanguage="java"%>;
<%@pageimport="java.util.*"%>;
<%@pageimport="java.sql.*"%>;
<%@pageimport="javax.sql.*"%>;
<%@pageimport="javax.naming.*"%>;

<%
Stringjndi_name="java:comp/env/jdbc/mydatasource";

String strSql = "select * from users";

Context ctx=null;
DataSource ds=null;
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;

 

try{
ctx = new InitialContext();
if( ctx == null ) out.println("no context");
ds = (DataSource) ctx.lookup(jndi_name);
if( ds == null ) out.println("no datasource");
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(strSql);
while(rs.next()){
out.println(rs.getString(1));
}
}catch(Exception ex){
ex.printStackTrace();
out.println(ex.toString());
}finally{
if( rs != null )rs.close();
if( stmt != null ) stmt.close();
if( conn != null) conn.close();
if( ctx != null ) ctx.close();
}
%>

 

OK!全部结束,以上是我自己收集各种资料然后摸索出来的,并已经运行在实际环境中!

如要转载,请尊重作者,请注明出处!


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值