package org.mobicents.slee.runtime.activity;
import org.apache.log4j.Logger;
import org.mobicents.slee.container.SleeContainer;
import org.mobicents.slee.runtime.transaction.SleeTransactionManager;
public class UnreferencedActivity2ndCheckTask implements Runnable {
private static final Logger logger = Logger
.getLogger(UnreferencedActivity2ndCheckTask.class);
private static final SleeContainer sleeContainer = SleeContainer
.lookupFromJndi();
private final ActivityContextHandle ach;
public UnreferencedActivity2ndCheckTask(ActivityContextHandle ach) {
super();
this.ach = ach;
}
public void run() {
SleeTransactionManager txManager = sleeContainer
.getTransactionManager();
boolean rollback = true;
try {
txManager.begin();
ActivityContext ac = sleeContainer.getActivityContextFactory().getActivityContext(ach);
if (ac != null && !ac.isEnding()) {
ac.unreferencedActivity2ndCheck();
}
rollback = false;
} catch (Exception e) {
logger.error(
"failure while running unrefered activity 2nd check for ac with id "
+ ach, e);
} finally {
try {
if (rollback) {
txManager.rollback();
} else {
txManager.commit();
}
} catch (Exception e) {
logger
.error(
"failure while ending tx, while running unrefered activity 2nd check for ac with id "
+ ach, e);
}
}
}
}