Spring for .NET - Context和WebApplicationContext问题

时间:2011-10-27 02:08:04

标签: asp.net nhibernate spring.net

我最近继承了一个使用Spring for Net和nHibernate的项目,我已经开始在我们的Live服务器上出现需要紧急修复的重复错误。

我不是Spring或nHibernate专家,我只是开始弄清楚这些技术的作用,以及不同的设置是什么(即我是初学者)。

我将网站从Spring版本1.2升级到1.3,nHibernate从1.2升级到2.1,这个错误已经开始蔓延,现在变得非常规则。

  

异常信息:      异常类型:ConfigurationErrorsException      异常消息:创建上下文'spring.root'时出错:现有上下文>'[spring.root]:WebApplicationContext(xxxxxxxx)'已在名称'spring.root'下注册。

有关错误和部署的说明:

  • 我们在IIS 6中有20个网站使用不同的代码副本,所有访问差异数据库,都分配了自己的应用程序池。

  • 当用户尝试访问他们最初访问该站点时未访问的页面时(自上次重新启动应用程序池以来),似乎发生了错误。如果我们重新启动应用程序池,则该页面上不再出现此问题,除非我们重新启动池,因为另一个页面存在此问题。

  • 我不确定问题是否正在发生,因为我们有多个站点试图访问相同的弹簧上下文,或者每个站点都有自己的弹簧上下文。我的印象是,当用户试图访问该站点时,如果之前没有访问该站点,则弹簧将为所有对象设置注入(这就是为什么第一页需要一点时间才能加载IIS重新启动或应用程序池重新启动。

  • 我一直在浏览Spring for Net示例代码,并且在web.config,dao.xml,web.xml文件中的设置非常相似......

的Web.config:

<sectionGroup name="spring">
    <section name="context" type="Spring.Context.
        Support.WebContextHandler, Spring.Web"/>
    <section name="parsers" type="Spring.
        Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<spring>
    <parsers>
        <parser type="Spring.Data.
            Config.DatabaseNamespaceParser, Spring.Data"/>
        <parser type="Spring.Transaction.Config.
            TxNamespaceParser, Spring.Data"/>
    </parsers>
</spring>
<context>
    <resource uri="~/conf/Aspects.xml"/>
    <resource uri="~/conf/Dao.xml"/>
    <resource uri="~/conf/Services.xml"/>
    <resource uri="~/conf/Web.xml"/>
</context>
<appSettings>
    <add key="Spring.Data.NHibernate.Support.
        OpenSessionInViewModule.SessionFactoryObjectName" 
        value="SessionFactory"/>
</appSettings>

dao.xml中的差异:

  • 使用HibernateTransactionManager,而不是transactionManager
  • 使用HibernateGenericTemplate
  • 使用Spring.Data.NHibernate.LocalSessionFactoryObject,其中示例使用继承自LocalSessionFactoryObject的自定义会话工厂对象
  • 我们没有<property name="ExposeTransactionAwareSessionFactory" value="true" />,需要解决这个问题。

我会继续阅读Spring for Net文档,试着理解为什么会这样。虽然这是一个常见问题,但我们将不胜感激。

0 个答案:

没有答案