Spring TransactionSynchronizationManagerを使用しています。このマネージャーを使用して、新しいSynchronization TransactionSynchronizationAdapterを登録し、このTransactionSynchronizationAdapterのafterCompletion(int status)メソッドをオーバーライドします。 このafterCompletion内では、statusの値はcommited(0)として取得される必要がありますが、active(0)として取得されます。
これがコードの一部です::
TransactionSynchronizationManager
.registerSynchronization(new TransactionSynchronizationAdapter() {
public void beforeCompletion(){
int status =Status.STATUS_COMMITTED;
System.out.println("inside before completion block hurray");
}
public void afterCompletion(int status) {
System.out.println("the value of status is " + status);
System.out.println("coming after completion");
if (status == Status.STATUS_COMMITTED) {
final String memcachedKey = getMemcachedKey(pOrderId);
System.out.println("the value of memcached key is inside the aftercompletion " + memcachedKey);
mCmatesMemCachedClient.set(memcachedKey, PROVISIONING_PASS);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Tx commited. Set into memcached:Key="
+ memcachedKey + ",Value=" + PROVISIONING_PASS);
}
}
}
});
}