按照以上步驟配置好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。