[英]Auto-closing TIBCO EMS connections when no longer needed
我們正在使用來自ASP.NET 3.5應用程序的TIBCO EMS作為與外部系統的一個接口,並且看起來工作得很好-除了運行另一端的人告訴我們,我們正在瘋狂地建立連接而從未關閉它們。
我正在做的是通過TIBCO ConnectionFactory
和Connection
本身的具有靜態成員變量的單個類路由所有TIBCO通信,這被告知構造它們非常耗費資源和時間:
private static ConnectionFactory Factory
{
get
{
if (HttpContext.Current.Application["EMSConnectionFactory"] == null)
{
ConnectionFactory connectionFactory = CreateTibcoFactory();
HttpContext.Current.Application["EMSConnectionFactory"] = connectionFactory;
}
return HttpContext.Current.Application["EMSConnectionFactory"] as ConnectionFactory;
}
}
private static Connection EMSConnection
{
get
{
if (HttpContext.Current.Application["EMSConnection"] == null)
{
Connection connection = Factory.CreateConnection(*username*, *password*);
connection.ExceptionHandler += new EMSExceptionHandler(TibcoConnectionExceptionHandler);
connection.Start();
HttpContext.Current.Application["EMSConnection"] = connection;
}
return HttpContext.Current.Application["EMSConnection"] as Connection;
}
}
現在我的麻煩是:我在哪里以及如何
SqlConnection
) 我似乎並沒有從C#/ .NET世界中找到關於如何使用TIBCO EMS的有用信息……任何參與者? 謝謝!!
首先,我不明白您怎么可能用盡連接。 由於將連接存儲在應用程序中,因此整個IIS應用程序應該只具有一個連接。
拋開這些,我將執行以下操作:
DateTime
設置為DateTime.Now
; DateTime.Now
之間的區別。 如果那比特定的超時時間長,則Application["EMSConnectionFactory"]
連接並將Application["EMSConnectionFactory"]
為null; Application["EMSConnectionFactory"]
,將其設置為null。 to
DateTime.Now`。 這樣,連接應自動關閉。
請注意,您將必須引入鎖定。 您可以為此使用Application.Lock()
和Application.Unlock()
。
關於關閉錯誤:我看到您已經在連接實例上附加了異常處理程序。 您不能以此關閉連接嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.