首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-10-30 
Tomcat6.0.18下配置proxool0.9.1 jndi连接池for Oracle10g及使用方法分为4步1、下载proxool0.9.1 的proxool

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

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


?

热点排行