Transaction tx;
try {
tx = _contexts.txManager.suspend();
__log.debug("TX " + tx + " suspended for in-memory invoke. ");
} catch (Exception ex) {
throw new BpelEngineException("TxManager Error: cannot suspend!", ex);
}
unreliableMex.request();
unreliableMex.setState(State.INVOKE_XXX);
try {
try {
_contexts.mexContext.invokePartnerUnreliable(unreliableMex);
} catch (Throwable t) {
__log.error("Unexpected error invoking partner." ,t);
MexDaoUtil.setFailed(mexDao, FailureType.OTHER, t.toString());
return;
}
try {
unreliableMex.waitForAck(mexDao.getTimeout());
} catch (InterruptedException ie) {
__log.warn("Interrupted waiting for MEX response.");
}
} finally {
unreliableMex.setState(State.DEAD);
try {
_contexts.txManager.resume(tx);
__log.debug("TX " + tx + " resumed for in-memory invoke. ");
} catch (Exception e) {
throw new BpelEngineException("TxManager Error: cannot resume!", e);
}
}
if (unreliableMex.getStatus() != Status.ACK) {
MexDaoUtil.setFailed(mexDao, FailureType.NO_RESPONSE, "No Response");