protected void closeResources() { Iterator i = resources.entrySet().iterator(); while (i.hasNext()) { Map.Entry entry = (Map.Entry) i.next(); final Object value = entry.getValue(); if (value instanceof MuleXaObject) { MuleXaObject xaObject = (MuleXaObject) value; if (!xaObject.isReuseObject()) { try { xaObject.close(); i.remove(); } catch (Exception e) { logger.error("Failed to close resource " + xaObject, e); } } } } }
public synchronized void bindResource(Object key, Object resource) throws TransactionException { if (resources.containsKey(key)) { throw new IllegalTransactionStateException( CoreMessages.transactionResourceAlreadyListedForKey(key)); } resources.put(key, resource); if (key == null) { logger.error("Key for bound resource " + resource + " is null"); } if (resource instanceof MuleXaObject) { MuleXaObject xaObject = (MuleXaObject) resource; xaObject.enlist(); } else if (resource instanceof XAResource) { enlistResource((XAResource) resource); } else { logger.error("Bound resource " + resource + " is neither a MuleXaObject nor XAResource"); } }
protected void delistResources() { Iterator i = resources.entrySet().iterator(); while (i.hasNext()) { Map.Entry entry = (Map.Entry) i.next(); final Object xaObject = entry.getValue(); if (xaObject instanceof MuleXaObject) { // there is need for reuse object try { ((MuleXaObject) xaObject).delist(); } catch (Exception e) { logger.error("Failed to delist resource " + xaObject, e); } } } }