nhibernate burrowを使用してASP.NET MVC環境でQuartzを使用する
-
24-10-2019 - |
質問
私はバロウを実行しているウェブサイトを持っています、そして私はそれをQuartzの仕事にも使いたいです。
問題は、私が彼らにどんな状態も共有しないことを望んでいるということです。 Quartzジョブは各スレッドで実行され、MVCフレームワークはすべてのリクエストの最後にワークスペースを閉じます。理想的には、MVCには独自のセッションが必要であり、各ジョブには独自のセッションが必要です。
ここでの私の可能性は何ですか?
PS:私はクォーツ、バロウ、MVCのところに非常に慣れていないので、おそらく非常に重要な知識を見逃しています:|
解決
少なくとも今のところはうまくいくように見える簡単な素朴な方法を試しました。私がここでやっている根本的に間違っていることはありますか?これらの変数は、スレッドが終了するとゴミが収集されますか?
public static class SessionManager
{
[ThreadStatic]
private static IDictionary<ISessionFactory, ISession> _sessions;
public static ISession GetSession(Type type)
{
var burrow = new BurrowFramework();
if (burrow.WorkSpaceIsReady)
{
return burrow.GetSession(type);
}
else
{
if (_sessions == null)
{
_sessions = new Dictionary<ISessionFactory, ISession>();
}
var factory = burrow.GetSessionFactory(type);
if (!_sessions.ContainsKey(factory))
{
_sessions[factory] = null;
}
var session = _sessions[factory];
if (session == null || !session.IsOpen)
{
session = _sessions[factory] = factory.OpenSession();
}
return session;
}
}
}
所属していません StackOverflow