|
|
|
@ -419,6 +419,8 @@ public abstract class ConnectionFactoryUtils {
@@ -419,6 +419,8 @@ public abstract class ConnectionFactoryUtils {
|
|
|
|
|
|
|
|
|
|
private final boolean transacted; |
|
|
|
|
|
|
|
|
|
private boolean commitProcessed; |
|
|
|
|
|
|
|
|
|
public JmsResourceSynchronization(JmsResourceHolder resourceHolder, Object resourceKey, boolean transacted) { |
|
|
|
|
super(resourceHolder, resourceKey); |
|
|
|
|
this.transacted = transacted; |
|
|
|
@ -431,6 +433,7 @@ public abstract class ConnectionFactoryUtils {
@@ -431,6 +433,7 @@ public abstract class ConnectionFactoryUtils {
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void processResourceAfterCommit(JmsResourceHolder resourceHolder) { |
|
|
|
|
this.commitProcessed = true; |
|
|
|
|
try { |
|
|
|
|
resourceHolder.commitAll(); |
|
|
|
|
} |
|
|
|
@ -439,6 +442,16 @@ public abstract class ConnectionFactoryUtils {
@@ -439,6 +442,16 @@ public abstract class ConnectionFactoryUtils {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void afterCompletion(int status) { |
|
|
|
|
if (status == STATUS_COMMITTED && this.transacted && !this.commitProcessed) { |
|
|
|
|
// JmsResourceSynchronization registered in afterCommit phase of other synchronization
|
|
|
|
|
// -> late local JMS transaction commit here, otherwise it would silently get dropped.
|
|
|
|
|
afterCommit(); |
|
|
|
|
} |
|
|
|
|
super.afterCompletion(status); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void releaseResource(JmsResourceHolder resourceHolder, Object resourceKey) { |
|
|
|
|
resourceHolder.closeAll(); |
|
|
|
|