Исключение Не удалось открыть Hibernate Session для транзакции - PullRequest
0 голосов
/ 25 мая 2010

Иногда я получаю эту проблему в своем журнале NHibernate. В этот момент мое приложение останавливается.

Обновлена ​​конфигурация данных.

Даже после успешной транзакции. Соединение приложения с базой данных persist.in

Журнал Nhibernate показывает

Журнал Nhibernate

2010-05-21 14: 45: 08,428 [Рабочий] [0] DEBUG NHibernate.Impl.SessionImpl [(null)] <(null)> -

выполнение сброса

2010-05-21 14: 45: 08,428 [Рабочий] [0] ОТЛАДКА NHibernate.Impl.ConnectionManager [(null)] <</p>

(ноль)> - начало регистрации сброса

2010-05-21 14: 45: 08,428 [Рабочий] [0] ОТЛАДКА NHibernate.Impl.ConnectionManager [(null)] <</p>

(ноль)> - регистрация конца флеша

2010-05-21 14: 45: 08,428 [Worker] [0] DEBUG NHibernate.Impl.SessionImpl [(null)] <(null)> -

флеш пост

2010-05-21 14: 45: 08,428 [Worker] [0] DEBUG NHibernate.Impl.SessionImpl [(null)] <(null)> -

до завершения транзакции

2010-05-21 14: 45: 08,428 [Рабочий] [0] ОТЛАДКА NHibernate.Impl.ConnectionManager [(null)] <</p>

(ноль)> - агрессивное освобождение соединения с базой данных

2010-05-21 14: 45: 08,428 [Рабочий] [0] ОТЛАДКА NHibernate.Connection.ConnectionProvider

[(null)] <(null)> - Закрытие соединения

2010-05-21 14: 45: 08,428 [Worker] [0] DEBUG NHibernate.Impl.SessionImpl [(null)] <(null)> -

завершение транзакции

2010-05-21 14: 45: 08,428 [Рабочий] [0] ОТЛАДКА NHibernate.Transaction.AdoTransaction [(null)] <</p>

(ноль)> - запуск AdoTransaction.Dispose ()

2010-05-21 14: 45: 08,428 [Worker] [0] DEBUG NHibernate.Impl.SessionImpl [(null)] <(null)> -

закрытие сессии

2010-05-21 14: 45: 08,428 [Работник] [0] DEBUG NHibernate.Impl.BatcherImpl [(null)] <(null)> -

работает BatcherImpl.Dispose (true)

Ниже дан мой файл конфигурации данных

   <?xml version="1.0" encoding="utf-8" ?>

<objects 
xmlns="http://www.springframework.net" 

         xmlns:db="http://www.springframework.net/database"

     xmlns:tx="http://www.springframework.net/tx">

  <object id="AuditLogger" type="Risco.Rsp.Ac.Audit.AuditLogger, Risco.Rsp.Ac.Audit" singleton="false"> 

    <property name="CacheSettings" ref="CacheSettings"  />
  </object>


  <object id="CacheSettings"

          type="Risco.Rsp.Ac.AMAC.CacheMgmt.Utilities.UpdateEntityCacheHelper, 

Risco.Rsp.Ac.AMAC.CacheMgmt.Utilities" singleton="false"/>

  <!-- Property placeholder configurer for database settings-->

  <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">

    <property name="ConfigSections" value="databaseSettings"/>
  </object>

  <db:provider id="AMACDbProvider"

                provider="OracleClient-2.0"

    connectionString="Data Source=RISCODEVDB;User ID=amacdevuser; Password=amacuser1234;"/>

  <!-- For creating Factory objects -->
  <object id="NHibernateSessionFactory" 

  type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate12">

    <property name="DbProvider" ref="AMACDbProvider"/>

    <property name="MappingAssemblies">
      <list>
              <value>
    Risco.Rsp.Ac.AMAC.CacheMappings

       </value>

      </list>

    </property>

    <property name="HibernateProperties">

      <dictionary>

        <entry key="hibernate.connection.provider"

               value="NHibernate.Connection.DriverConnectionProvider"
         />

        <entry key="hibernate.dialect"

               value="NHibernate.Dialect.Oracle9Dialect"
              />


        <entry key="hibernate.connection.driver_class"


               value="NHibernate.Driver.OracleClientDriver"/>

      </dictionary>


    </property>

  </object>


  <object id="HibernateTemplate" type="Spring.Data.NHibernate.HibernateTemplate"

singleton="false">

    <property name="SessionFactory"

 ref="NHibernateSessionFactory" />

    <property name="TemplateFlushMode" 
value="Auto" />

    <property name="CacheQueries" value="true" />

    <property name="EntityInterceptor" ref="AuditLogger"/>

  </object>


  ><object id="transactionManager" singleton="true"  

    type="Spring.Data.NHibernate.HibernateTransactionManager, >Spring.Data.NHibernate12">  

    <property name="DbProvider" ref="AMACDbProvider"/>

    <property name="SessionFactory" ref="NHibernateSessionFactory"/>

    <property name="EntityInterceptor" ref="AuditLogger"/>

  </object>


  <object id="EventPubSubDAOTx" 

type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject,Spring.Data">

    <property name="PlatformTransactionManager" ref="transactionManager"/>

    <property name="Target" ref="EventPubSubDAO"/>

    <property name="TransactionAttributes">
       <name-values>

        <add key="Save*" value="PROPAGATION_REQUIRES_NEW"/>

        <add key="Delete*" value="PROPAGATION_REQUIRED"/>

      </name-values>

    </property>

  </object>


  <object id="EventPubSubDAO"  

    type="Risco.Rsp.Ac.AMAC.DAO.EventPubSubMgmt.EventPubSubDAO, 

   Risco.Rsp.Ac.AMAC.DAO.EventPubSubMgmt">

    <property name="HibernateTemplate" ref="HibernateTemplate" />

    <property name="SessionFactory" ref="NHibernateSessionFactory"/>

  </object>

  <!-- EventPubSubMgmt DAO -->


  <tx:attribute-driven/>

  </objects>

Пожалуйста, помогите мне с этим вопросом. Спасибо

1 Ответ

0 голосов
/ 25 мая 2010

Исключение часто вызывается использованием сеанса, который уже закрыт .Ваш другой вопрос также указывает на то, что вам, возможно, придется пересмотреть свое соединение и использование сеанса.

Поскольку в ваших вопросах мало информации, трудно предложить улучшение.

...