【问题标题】:Nhibernate + Spring.Net + Transaction + too many threadsNhibernate + Spring.Net + Transaction + 线程太多
【发布时间】:2011-02-28 08:39:01
【问题描述】:

我正在使用 Sping.Net 1.3.1 和 Nhibernate 3.0。 我使用 Spring 的事务拦截器来创建我的事务。 我用事务属性标记我的事务方法。 我的服务器每秒收到大约 20-25 个请求,每个请求是 使用并行任务在新线程上处理。 我运行压力测试以验证我的服务器处理呼叫的能力。 当我一次只运行两三个电话时,每件事都很好,但是 当我同时运行 5 个 -10 调用时,我得到了 Spring 的异常。

例外是:

Spring.Transaction.TransactionSystemException was unhandled by user code
Message=Could not commit Hibernate transaction
Source=Spring.Data.NHibernate30
StackTrace:
  at Spring.Data.NHibernate.HibernateTransactionManager.DoCommit(DefaultTransactionStatus status) in c:\_svn\spring-net\tags\spring-net-1.3.1\src\Spring\Spring.Data.NHibernate\Data\NHibernate\HibernateTransactionManager.cs:line 568
  at Spring.Transaction.Support.AbstractPlatformTransactionManager.ProcessCommit(DefaultTransactionStatus status)

InnerException: NHibernate.TransactionException
  Message=Transaction not connected, or was disconnected
  Source=NHibernate
  StackTrace:
    at NHibernate.Transaction.AdoTransaction.CheckNotZombied() in d:\CSharp\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 408
    at NHibernate.Transaction.AdoTransaction.Commit() in d:\CSharp\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 181
    at Spring.Data.NHibernate.HibernateTransactionManager.DoCommit(DefaultTransactionStatus status) in c:\_svn\spring-net\tags\spring-net-1.3.1\src\Spring\Spring.Data.NHibernate\Data\NHibernate\HibernateTransactionManager.cs:line 556
   InnerException: 

非常感谢, 或者 Chubook。

【问题讨论】:

    标签: nhibernate spring.net


    【解决方案1】:

    我相信你现在已经发现了这个答案。当你在多个线程之间共享一个 NHibernate 会话时,你会遇到这个并发问题。每个线程必须在范围内拥有自己的会话,以避免事务断开状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多