按照以上步骤配置好proxool,且能正确运行,则修改hibernate.cfm.xml文件,内容如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<!-- 此为注释部分
<session-factory>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="myeclipse.connection.profile">
for mssql
</property>
<property name="connection.url">
jdbc:jtds:sqlserver://localhost:2767/camis
</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">
net.sourceforge.jtds.jdbc.Driver
</property>
<mapping resource="com/comingnet/hibernate/角色表.hbm.xml" />
</session-factory>
-->
<session-factory>
<!-- Database connection settings -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
<property name="hibernate.proxool.pool_alias">MyPool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<mapping resource="com/comingnet/hibernate/角色表.hbm.xml" />
</session-factory>
</hibernate-configuration>
但要注意的是,如果在web.xml里面配置了让proxool在WEB窗口启动时自动打开连接,那么会出现如下的错误,我被这个错误折磨了差不多一天
。实际上出错的信息提示得也很清楚,但是当时在web.xml里面注释掉了不该注释的东西,而把该注释的那几行没注释掉,所以有时候一个不起
眼的小错误真是够让你受的。
javax.servlet.ServletException: Proxool Provider unable to load JAXP configurator file: proxool.xml
org.logicalcobwebs.proxool.ProxoolException: Attempt to register duplicate pool called 'MyPool'
把web.xml中的
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/classes/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
注释掉就OK了。
一般情况下,如果重复调用hibernate的sessionFactory,仍然会出现上述问题,只不过第一次成功,再执行即会出现。解决办法是不要重复调
用sessionFactory,只在第一次执行时注册,可以直接利用MyEclipse生成的HibernateSessionFactory类来获取session。