Domanda

Ho un sito web in esecuzione Burrow, e vorrei usarlo per i lavori di quarzo pure.

Il fatto è che io voglio che non condividono qualsiasi stato. I lavori quarzo è in esecuzione in ogni propria connessione mentre quadro Mvc chiude l'area di lavoro alla fine di ogni richiesta. Idealmente, MVC dovrebbe avere un proprio sessione, e ogni lavoro dovrebbe avere una propria sessione.

Quali sono le mie possibilità qui?

PS: Sono molto nuovo a quarzo, Burrow e MVC btw, quindi sono probabilmente manca un po 'di conoscenza molto essenziale: |

È stato utile?

Soluzione

ho cercato un modo ingenuo semplice che almeno sembrano funzionare per ora. C'è qualcosa di fondamentalmente sbagliato che sto facendo qui? Saranno queste variabili essere garbage collection quando un thread esce?

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;
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top