让jdbc与Hibernate共用同一个proxool数据库连接池,以便用jdbc查询Hibernate增删改。试了三种方法。只有在tomcat6设置jndi的方法较令人满意。
第一种是:
结果是Hibernate无法获取dataSource。Hibernate无法运行
第二种是:
结果是服务器启动时报错,提示不能将属性houseKeepingSleepTime的值从string转为long。去掉houseKeepingSleepTime后运行正常,但不能配置houseKeepingSleepTime总觉得有点瑕疵。
第三种:
把
数据库驱动包
proxool-0.9.1.jar
proxool-cglib.jar
commons-logging-1.0.4.jar
复制到<tomcat_home>/lib目录下
在tomcat\conf\context.xml 中配置
Spring配置:
结果是运行正常,这样就可以把dataSource注入jdbctemplate,sessionFactory注入Hibernatetemplate了。
第一种是:
<bean id="TestSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<value>proxool.MyPool</value> <!--proxool是proxool.xml的文件名,MyPool是proxool.xml中配置的别名-->
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
……
结果是Hibernate无法获取dataSource。Hibernate无法运行
第二种是:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="driverUrl">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="user">
<value>xxx</value>
</property>
<property name="password">
<value>xxx</value>
</property>
<property name="alias">
<value>JDBCProxool</value>
</property>
<property name="prototypeCount">
<value>3</value>
</property>
<property name="maximumConnectionCount">
<value>30</value>
</property>
<property name="minimumConnectionCount">
<value>15</value>
</property>
<property name="houseKeepingSleepTime">
<value>90000</value>
</property>
<property name="maximumActiveTime">
<value>180000</value>
</property>
</bean>
结果是服务器启动时报错,提示不能将属性houseKeepingSleepTime的值从string转为long。去掉houseKeepingSleepTime后运行正常,但不能配置houseKeepingSleepTime总觉得有点瑕疵。
第三种:
把
数据库驱动包
proxool-0.9.1.jar
proxool-cglib.jar
commons-logging-1.0.4.jar
复制到<tomcat_home>/lib目录下
在tomcat\conf\context.xml 中配置
<Context>
<Resource name="jdbc/OraclePool"
auth="Container"
type="javax.sql.DataSource"
factory="org.logicalcobwebs.proxool.ProxoolDataSource"
proxool.alias="DBPool"
user="xxx"
password="xxx"
delegateProperties="foo=true"
proxool.jndi-name="oraclejndi"
proxool.driver-url="jdbc:oracle:thin:@localhost:1521:orcl"
proxool.driver-class="oracle.jdbc.driver.OracleDriver"
proxool.house-keeping-sleep-time="90000"
proxool.prototype-count="3"
proxool.maximum-connection-count="30"
proxool.minimum-connection-count="15"
/>
</Context>
Spring配置:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/OraclePool</value>
</property>
</bean>
结果是运行正常,这样就可以把dataSource注入jdbctemplate,sessionFactory注入Hibernatetemplate了。