use of org.jboss.cache.Node in project jain-sip.ha by RestComm.
the class ClientTransactionCacheData method putClientTransaction.
public void putClientTransaction(SIPClientTransaction clientTransaction) throws SipCacheException {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logStackTrace();
}
final MobicentsHASIPClientTransaction haClientTransaction = (MobicentsHASIPClientTransaction) clientTransaction;
final String transactionId = haClientTransaction.getTransactionId();
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("put HA SIP Client Transaction " + clientTransaction + " with id " + transactionId);
}
final Cache jbossCache = getMobicentsCache().getJBossCache();
TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
boolean doTx = false;
try {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager :" + transactionManager);
}
if (transactionManager != null && transactionManager.getTransaction() == null) {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager begin transaction");
}
transactionManager.begin();
doTx = true;
}
final Node childNode = getNode().addChild(Fqn.fromElements(transactionId));
for (Entry<String, Object> metaData : haClientTransaction.getMetaDataToReplicate().entrySet()) {
childNode.put(metaData.getKey(), metaData.getValue());
}
final Object transactionAppData = haClientTransaction.getApplicationDataToReplicate();
if (transactionAppData != null) {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("replicating application data " + transactionAppData);
}
childNode.put(APPDATA, transactionAppData);
}
} catch (Exception ex) {
try {
if (transactionManager != null) {
// Let's set it no matter what.
transactionManager.setRollbackOnly();
}
} catch (Exception exn) {
logger.logError("Problem rolling back session mgmt transaction", exn);
}
} finally {
if (doTx) {
try {
if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager committing transaction");
}
transactionManager.commit();
} else {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("endBatch(): rolling back batch");
}
transactionManager.rollback();
}
} catch (RollbackException re) {
// Do nothing here since cache may rollback automatically.
logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
} catch (RuntimeException re) {
throw re;
} catch (Exception e) {
throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
}
}
}
}
use of org.jboss.cache.Node in project jain-sip.ha by RestComm.
the class JBossSipCache method putServerTransaction.
public void putServerTransaction(SIPServerTransaction serverTransaction) throws SipCacheException {
UserTransaction tx = null;
try {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.cache.transaction.DummyContextFactory");
tx = (UserTransaction) new InitialContext(prop).lookup("UserTransaction");
if (tx != null) {
tx.begin();
}
Node serverTransactionNode = serverTxRootNode.addChild(Fqn.fromString(serverTransaction.getTransactionId()));
serverTransactionNode.put(serverTransaction.getTransactionId(), serverTransaction);
if (tx != null) {
tx.commit();
}
} catch (Exception e) {
if (tx != null) {
try {
tx.rollback();
} catch (Throwable t) {
}
}
throw new SipCacheException("A problem occured while putting the following server transaction " + serverTransaction.getTransactionId() + " into JBoss Cache", e);
}
}
use of org.jboss.cache.Node in project jain-sip.ha by RestComm.
the class JBossSipCache method putDialog.
/* (non-Javadoc)
* @see org.mobicents.ha.javax.sip.cache.SipCache#putDialog(gov.nist.javax.sip.stack.SIPDialog)
*/
public void putDialog(SIPDialog dialog) throws SipCacheException {
UserTransaction tx = null;
try {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.cache.transaction.DummyContextFactory");
tx = (UserTransaction) new InitialContext(prop).lookup("UserTransaction");
if (tx != null) {
tx.begin();
}
Node dialogNode = dialogRootNode.addChild(Fqn.fromString(dialog.getDialogId()));
dialogNode.put(dialog.getDialogId(), dialog);
if (tx != null) {
tx.commit();
}
} catch (Exception e) {
if (tx != null) {
try {
tx.rollback();
} catch (Throwable t) {
}
}
throw new SipCacheException("A problem occured while putting the following dialog " + dialog.getDialogId() + " into JBoss Cache", e);
}
}
use of org.jboss.cache.Node in project jain-sip.ha by RestComm.
the class ServerTransactionCacheData method putServerTransaction.
public void putServerTransaction(SIPServerTransaction serverTransaction) throws SipCacheException {
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logStackTrace();
}
final MobicentsHASIPServerTransaction haServerTransaction = (MobicentsHASIPServerTransaction) serverTransaction;
final String transactionId = haServerTransaction.getTransactionId();
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logDebug("put HA SIP Server Transaction " + serverTransaction + " with id " + transactionId);
}
final Cache jbossCache = getMobicentsCache().getJBossCache();
TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
boolean doTx = false;
try {
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logDebug("transaction manager :" + transactionManager);
}
if (transactionManager != null && transactionManager.getTransaction() == null) {
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logDebug("transaction manager begin transaction");
}
transactionManager.begin();
doTx = true;
}
final Node childNode = getNode().addChild(Fqn.fromElements(transactionId));
for (Entry<String, Object> metaData : haServerTransaction.getMetaDataToReplicate().entrySet()) {
childNode.put(metaData.getKey(), metaData.getValue());
}
final Object transactionAppData = haServerTransaction.getApplicationDataToReplicate();
if (transactionAppData != null) {
childNode.put(APPDATA, transactionAppData);
}
} catch (Exception ex) {
try {
if (transactionManager != null) {
// Let's set it no matter what.
transactionManager.setRollbackOnly();
}
} catch (Exception exn) {
clusteredlogger.logError("Problem rolling back session mgmt transaction", exn);
}
} finally {
if (doTx) {
try {
if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logDebug("transaction manager committing transaction");
}
transactionManager.commit();
} else {
if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
clusteredlogger.logDebug("endBatch(): rolling back batch");
}
transactionManager.rollback();
}
} catch (RollbackException re) {
// Do nothing here since cache may rollback automatically.
clusteredlogger.logWarning("endBatch(): rolling back transaction with exception: " + re);
} catch (RuntimeException re) {
throw re;
} catch (Exception e) {
throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
}
}
}
}
use of org.jboss.cache.Node in project jain-sip.ha by RestComm.
the class SIPDialogCacheData method putSIPDialog.
public void putSIPDialog(SIPDialog dialog) throws SipCacheException {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logStackTrace();
}
final HASipDialog haSipDialog = (HASipDialog) dialog;
final String dialogId = haSipDialog.getDialogIdToReplicate();
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("put HA SIP Dialog " + dialog + " with dialog " + dialogId);
}
final Cache jbossCache = getMobicentsCache().getJBossCache();
TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
boolean doTx = false;
try {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager :" + transactionManager);
}
if (transactionManager != null && transactionManager.getTransaction() == null) {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager begin transaction");
}
transactionManager.begin();
doTx = true;
}
final Node childNode = getNode().addChild(Fqn.fromElements(dialogId));
for (Entry<String, Object> metaData : haSipDialog.getMetaDataToReplicate().entrySet()) {
childNode.put(metaData.getKey(), metaData.getValue());
}
final Object dialogAppData = haSipDialog.getApplicationDataToReplicate();
if (dialogAppData != null) {
childNode.put(APPDATA, dialogAppData);
}
} catch (Exception ex) {
try {
if (transactionManager != null) {
// Let's set it no matter what.
transactionManager.setRollbackOnly();
}
} catch (Exception exn) {
logger.logError("Problem rolling back session mgmt transaction", exn);
}
} finally {
if (doTx) {
try {
if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("transaction manager committing transaction");
}
transactionManager.commit();
} else {
if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
logger.logDebug("endBatch(): rolling back batch");
}
transactionManager.rollback();
}
} catch (RollbackException re) {
// Do nothing here since cache may rollback automatically.
logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
} catch (RuntimeException re) {
throw re;
} catch (Exception e) {
throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
}
}
}
}
Aggregations