Search in sources :

Example 1 with SessionNotFoundException

use of org.drools.persistence.api.SessionNotFoundException in project drools by kiegroup.

the class PersistableRunner method initExistingKnowledgeSession.

protected void initExistingKnowledgeSession(Long sessionId, KieBase kbase, KieSessionConfiguration conf, PersistenceContext persistenceContext) {
    if (!doRollback && this.ksession != null) {
        return;
    // nothing to initialise
    }
    this.doRollback = false;
    try {
        // if locking is active, this will also lock the (found) SessionInfo instance
        this.sessionInfo = (SessionInfo) persistenceContext.findSession(sessionId);
    } catch (Exception e) {
        throw new SessionNotFoundException("Could not find session data for id " + sessionId, e);
    }
    if (sessionInfo == null) {
        throw new SessionNotFoundException("Could not find session data for id " + sessionId);
    }
    if (this.marshallingHelper == null) {
        // this should only happen when this class is first constructed
        this.marshallingHelper = new SessionMarshallingHelper(kbase, conf, env);
        MarshallingConfigurationImpl config = (MarshallingConfigurationImpl) this.marshallingHelper.getMarshaller().getMarshallingConfiguration();
        config.setMarshallProcessInstances(false);
        config.setMarshallWorkItems(false);
    }
    this.sessionInfo.setJPASessionMashallingHelper(this.marshallingHelper);
    // if this.ksession is null, it'll create a new one, else it'll use the existing one
    this.ksession = this.marshallingHelper.loadSnapshot(this.sessionInfo.getData(), this.ksession, new JpaSessionInitializer(this));
    // update the session id to be the same as the session info id
    InternalKnowledgeRuntime kruntime = ((InternalKnowledgeRuntime) ksession);
    kruntime.setIdentifier(this.sessionInfo.getId());
    kruntime.setEndOperationListener(new EndOperationListenerImpl(this.txm, this.sessionInfo));
    this.runner = new TransactionInterceptor();
    // apply interceptors
    Iterator<ChainableRunner> iterator = this.interceptors.descendingIterator();
    while (iterator.hasNext()) {
        addInterceptor(iterator.next(), false);
    }
    initKieSessionMBeans(this.ksession);
}
Also used : InternalKnowledgeRuntime(org.drools.core.common.InternalKnowledgeRuntime) MarshallingConfigurationImpl(org.drools.core.marshalling.impl.MarshallingConfigurationImpl) ChainableRunner(org.drools.core.runtime.ChainableRunner) SessionMarshallingHelper(org.drools.persistence.api.SessionMarshallingHelper) SessionNotFoundException(org.drools.persistence.api.SessionNotFoundException) SessionNotFoundException(org.drools.persistence.api.SessionNotFoundException)

Aggregations

InternalKnowledgeRuntime (org.drools.core.common.InternalKnowledgeRuntime)1 MarshallingConfigurationImpl (org.drools.core.marshalling.impl.MarshallingConfigurationImpl)1 ChainableRunner (org.drools.core.runtime.ChainableRunner)1 SessionMarshallingHelper (org.drools.persistence.api.SessionMarshallingHelper)1 SessionNotFoundException (org.drools.persistence.api.SessionNotFoundException)1