您的位置:首页 > 其它

一次OSIV调试经历

2009-11-27 16:43 417 查看
使用nHibernate有一段时间了,但一直没有使用它的延迟加载机制,究其根本大概源于刚接触nHibernate的失败调试经历——因为总是看到诸如“Could not initialize proxy - the owning Session was closed.”或者线程没有绑定Session之类的异常:

<appSettings>
<!--SessionFactory-->
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="HibernateSessionFactory"/>
</appSettings>

<httpModules>
<!--OpenSessionInView-->
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate21"/>
</httpModules>
五、在Mvc2站点中添加一个View,取一个拥有关联集合子对象的数据列表(如下图,ARTIST对象有一个ALBUMS关联对象,它是ALBUM对象的集合,一对多):


public class SpringControllerFactory : IControllerFactory
SpringControllerFactory.cs

WebApplicationContext configContext =
ContextRegistry.GetContext() as WebApplicationContext;

十四、至此,OSIV成功覆盖整个mvc应用。凡事有利弊,在java社区会有这样的讨论:

“open session in view 在访问量很大的时候,容易造成页面假死现象”

“因为osiv会在每次请求的过程中占用一个session,如果这个请求过程太长,session就无法释放了。可以在tomcat前端加一个apache,讲网速太慢的请求隔离掉。”

也许在这样的时候,一个好的网络运维,比你吭哧更管用 :)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: