We're using SQL Server 2005. My other theory is that we simply don't have
enough database connections at peak periods.

On Fri, Feb 6, 2009 at 4:00 PM, Ayende Rahien <[email protected]> wrote:

> Extremely unlikely.
> If this happens, then the session (and the connection) would go out of
> scope and would be reclaimed by the GC
> The finalizer should release the connection anyway.
>
> What DB are you talking about?
>
>
> On Fri, Feb 6, 2009 at 10:58 PM, Robin Nadeau <[email protected]> wrote:
>
>> I'm using the session-per-request pattern for nhibernate and am running
>> out of database connections. This takes about 1 week to occur on a heavily
>> loaded server, taking about 100,000 hits per day. The code I use to manage
>> my session is below. My theory is that the httpsession could timeout before
>> the EndRequest event, causing the reference to the session to be lost, and
>> therefore no closed. Is that even possible? If so, what can be done about
>> it?
>>
>> Public Class NHibernateSessionPerRequestModule
>>     Implements IHttpModule
>>
>>     Public Sub New()
>>     End Sub
>>
>>
>>     ' In the Init function, register for HttpApplication
>>     ' events by adding your handlers.
>>     Public Sub Init(ByVal application As HttpApplication) _
>>             Implements IHttpModule.Init
>>         AddHandler application.BeginRequest, _
>>             AddressOf Me.Application_BeginRequest
>>         AddHandler application.EndRequest, _
>>             AddressOf Me.Application_EndRequest
>>     End Sub
>>
>>     Private Sub Application_BeginRequest(ByVal source As Object, _
>>              ByVal e As EventArgs)
>>         'Fires when the request begins
>>         Try
>>             If
>> (HttpContext.Current.Request.Path.ToLower().IndexOf(".aspx") > -1) Then
>>                 Dim session As NHibernate.ISession =
>> StaticSessionManager.OpenSession()
>>                 session.BeginTransaction()
>>                 CurrentSessionContext.Bind(session)
>>             End If
>>         Catch ex As Exception
>>             Dim objLoggingController As New
>> AlertPay.Utilities.LoggingController
>>             objLoggingController.Write("Error in creating NHibernate
>> Session", "Information", 0, "0", "NHibernateSessionPerRequestModule")
>>         End Try
>>
>>
>>     End Sub
>>
>>     Private Sub Application_EndRequest(ByVal source As Object, _
>>         ByVal e As EventArgs)
>>
>>         If
>> (CurrentSessionContext.HasBind(StaticSessionManager.SessionFactory)) Then
>>             Dim session As NHibernate.ISession =
>> CurrentSessionContext.Unbind(StaticSessionManager.SessionFactory)
>>             If Not session Is Nothing Then
>>                 Try
>>                     session.Transaction.Commit()
>>                 Catch
>>                     session.Transaction.Rollback()
>>                     Dim objLoggingController As New
>> AlertPay.Utilities.LoggingController
>>                     objLoggingController.Write("Error in commiting
>> NHibernate Session. Rolling back transaction", "Information", 0, "0",
>> "NHibernateSessionPerRequestModule")
>>                 Finally
>>                     If session.IsOpen Then
>>                         session.Close()
>>                     End If
>>                 End Try
>>             End If
>>         End If
>>
>>
>>
>>     End Sub
>>
>>     Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
>>     End Sub
>>
>> End Class
>>
>>
>> --
>> Robin Nadeau, B.Eng.
>> Software Developer
>>
>>
>>
>
> >
>


-- 
Robin Nadeau, B.Eng.
Software Developer

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to