Мы используем TIBCO EMS из нашего приложения ASP.NET 3.5 для одного интерфейса с внешней системой, и кажется, что он работает просто отлично - за исключением того, что парни, работающие на другой стороне, говорят нам, что мы разрываем соединения, как сумасшедший и никогда не закрывающий их ....
То, что я делаю, - это маршрутизация всего трафика TIBCO через один класс со статическими переменными-членами как для TIBCO ConnectionFactory
, так и для самого Connection
, поскольку было сказано, что их создание требует значительных ресурсов и времени:
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;
}
}
Теперь моя проблема: где и как я мог
- сообщает соединению TIBCO о «автоматическом закрытии», когда оно больше не требуется (как в случае
SqlConnection
)
- закрыть соединение TIBCO при ошибке
- закрыть соединение TIBCO до того, как наше приложение ASP.NET завершит работу (или пользователь выйдет из системы)
Кажется, я не нахожу много полезной информации о том, как использовать TIBCO EMS из мира C # / .NET ... кто-нибудь? Спасибо !!