public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
@Override public void endRecovery() throws RecoveryException { if (recoveryConnectionHandle == null) return; try { if (log.isDebugEnabled()) { log.debug("recovery xa resource is being closed: " + recoveryXAResourceHolder); } recoveryConnectionHandle.close(); } catch (Exception ex) { throw new RecoveryException("error ending recovery on " + this, ex); } finally { recoveryConnectionHandle = null; // the recoveryXAResourceHolder actually wraps the recoveryConnectionHandle so closing it // would close the recoveryConnectionHandle twice which must not happen recoveryXAResourceHolder = null; } }
@Override public void endRecovery() throws RecoveryException { if (recoveryConnectionHandle == null) return; try { if (log.isDebugEnabled()) { log.debug("recovery xa resource is being closed: " + recoveryXAResourceHolder); } recoveryConnectionHandle.close(); } catch (Exception ex) { throw new RecoveryException("error ending recovery on " + this, ex); } finally { recoveryConnectionHandle = null; // the recoveryXAResourceHolder actually wraps the recoveryConnectionHandle so closing it // would close the recoveryConnectionHandle twice which must not happen recoveryXAResourceHolder = null; } }
public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
/** * {@inheritDoc} */ public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
/** * {@inheritDoc} */ public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
/** * {@inheritDoc} */ @Override public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
/** * {@inheritDoc} */ @Override public XAResourceHolderState startRecovery() throws RecoveryException { if (recoveryXAResourceHolder != null) { throw new RecoveryException("recovery already in progress on " + this); } if (xaResourceHolders.isEmpty()) { throw new RecoveryException("no XAResource registered, recovery cannot be done on " + this); } recoveryXAResourceHolder = new RecoveryXAResourceHolder(xaResourceHolders.values().iterator().next()); return new XAResourceHolderState(recoveryXAResourceHolder, this); }
public void endRecovery() throws RecoveryException { if (recoveryConnectionHandle == null) return; try { if (log.isDebugEnabled()) log.debug("recovery xa resource is being closed: " + recoveryXAResourceHolder); recoveryConnectionHandle.close(); } catch (Exception ex) { throw new RecoveryException("error ending recovery on " + this, ex); } finally { recoveryConnectionHandle = null; // the recoveryXAResourceHolder actually wraps the recoveryConnectionHandle so closing it // would close the recoveryConnectionHandle twice which must not happen recoveryXAResourceHolder = null; } }
public void endRecovery() throws RecoveryException { if (recoveryConnectionHandle == null) return; try { if (log.isDebugEnabled()) log.debug("recovery xa resource is being closed: " + recoveryXAResourceHolder); recoveryConnectionHandle.close(); } catch (Exception ex) { throw new RecoveryException("error ending recovery on " + this, ex); } finally { recoveryConnectionHandle = null; // the recoveryXAResourceHolder actually wraps the recoveryConnectionHandle so closing it // would close the recoveryConnectionHandle twice which must not happen recoveryXAResourceHolder = null; } }
public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryConnectionHandle != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JdbcConnectionHandle) pool.getConnectionHandle(false); recoveryXAResourceHolder = recoveryConnectionHandle.getPooledConnection().createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryConnectionHandle.getPooledConnection(), this); } catch (Exception ex) { throw new RecoveryException("cannot start recovery on " + this, ex); } }
public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryConnectionHandle != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JdbcConnectionHandle) pool.getConnectionHandle(false); recoveryXAResourceHolder = recoveryConnectionHandle.getPooledConnection().createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryConnectionHandle.getPooledConnection(), this); } catch (Exception ex) { throw new RecoveryException("cannot start recovery on " + this, ex); } }
@Override public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryConnectionHandle != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (Connection) pool.getConnectionHandle(false); PooledConnectionProxy pooledConnection = (PooledConnectionProxy) recoveryConnectionHandle; recoveryXAResourceHolder = pooledConnection.getPooledConnection().createRecoveryXAResourceHolder(); return new XAResourceHolderState(pooledConnection.getPooledConnection(), this); } catch (Exception ex) { throw new RecoveryException("cannot start recovery on " + this, ex); } }
public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryPooledConnection != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JmsConnectionHandle) pool.getConnectionHandle(false); recoveryPooledConnection = recoveryConnectionHandle.getPooledConnection(); recoveryXAResourceHolder = recoveryPooledConnection.createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryXAResourceHolder, recoveryPooledConnection.getPoolingConnectionFactory()); } catch (Exception ex) { throw new RecoveryException("error starting recovery", ex); } }
@Override public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryPooledConnection != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JmsConnectionHandle) pool.getConnectionHandle(false); recoveryPooledConnection = recoveryConnectionHandle.getPooledConnection(); recoveryXAResourceHolder = recoveryPooledConnection.createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryXAResourceHolder, recoveryPooledConnection.getPoolingConnectionFactory()); } catch (Exception ex) { throw new RecoveryException("error starting recovery", ex); } }
public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryPooledConnection != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JmsConnectionHandle) pool.getConnectionHandle(false); recoveryPooledConnection = recoveryConnectionHandle.getPooledConnection(); recoveryXAResourceHolder = recoveryPooledConnection.createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryXAResourceHolder, recoveryPooledConnection.getPoolingConnectionFactory()); } catch (Exception ex) { throw new RecoveryException("error starting recovery", ex); } }
@Override public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryConnectionHandle != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (Connection) pool.getConnectionHandle(false); PooledConnectionProxy pooledConnection = (PooledConnectionProxy) recoveryConnectionHandle; recoveryXAResourceHolder = pooledConnection.getPooledConnection().createRecoveryXAResourceHolder(); return new XAResourceHolderState(pooledConnection.getPooledConnection(), this); } catch (Exception ex) { throw new RecoveryException("cannot start recovery on " + this, ex); } }
@Override public XAResourceHolderState startRecovery() throws RecoveryException { init(); if (recoveryPooledConnection != null) throw new RecoveryException("recovery already in progress on " + this); try { recoveryConnectionHandle = (JmsConnectionHandle) pool.getConnectionHandle(false); recoveryPooledConnection = recoveryConnectionHandle.getPooledConnection(); recoveryXAResourceHolder = recoveryPooledConnection.createRecoveryXAResourceHolder(); return new XAResourceHolderState(recoveryXAResourceHolder, recoveryPooledConnection.getPoolingConnectionFactory()); } catch (Exception ex) { throw new RecoveryException("error starting recovery", ex); } }
@Test public void testNonRecoverableProducersAreNotRegistered() throws Exception { final XAResourceProducer producer = createMockProducer("non-recoverable"); when(producer.startRecovery()).thenThrow(new RecoveryException("recovery not possible")); try { ResourceRegistrar.register(producer); fail("expecting RecoveryException"); } catch (RecoveryException e) { assertNull(ResourceRegistrar.get("non-recoverable")); } }
@Test public void testNonRecoverableProducersAreNotRegistered() throws Exception { final XAResourceProducer producer = createMockProducer("non-recoverable"); when(producer.startRecovery()).thenThrow(new RecoveryException("recovery not possible")); try { ResourceRegistrar.register(producer); fail("expecting RecoveryException"); } catch (RecoveryException e) { assertNull(ResourceRegistrar.get("non-recoverable")); } }