我使用的是與Hibernate連接池的數據源空指針在休眠開始交易
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="connectionCacheProperties">
<value>
MinLimit:10
MaxLimit:75
InitialLimit:10
ConnectionWaitTimeout:120
InactivityTimeout:180
ValidateConnection:true
MaxStatementsLimit:0
</value>
</property>
</bean>
<bean id="hibernatePropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="hibernate.properties"/>
</bean>
<!-- Database Property -->
<bean id="hibernatePropertiesPearl"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.cache.provider_class">MyCacheProvider</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.max_fetch_depth">0</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup
</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.transaction.auto_close_session">false</prop>
</props>
</property>
</bean>
我所看到的,在連接數據庫成功打開,它的工作好,但一段時間後,我在日誌中收到以下錯誤消息,服務器剛剛死亡:
21:48:20,700 ERROR [RentalAgreementServlet] Generic exception occurred
java.lang.NullPointerException
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
at HibernateUtil.currentSession(HibernateUtil.java:116)
數據庫中的連接數似乎沒有問題。最大值爲75,但實際上永遠不會超過20. 在JBOSS 4.2中部署的應用程序。當空指針執行發生時,內存似乎也可以。 我覺得有些東西在泄漏,但我不知道是什麼。有可能,連接池認爲它有75個會話並試圖增加 - 同時db服務器只有20個連接?
我無法在開發環境中複製它。我試圖殺死/斷開會話,打破網絡連接。我有不同的例外,但沒有nullpointerexception。 任何人都可以給我一個提示什麼來調查什麼專注於?
@BorisPavlović - 我想你的評論讓你的評論毫無意義? :) – willcodejavaforfood 2010-12-06 16:31:51
鮑里斯 - 即使他刪除了參考文獻,您在評論中重複了公司名稱! – CodeClimber 2010-12-06 16:32:49