Author: boisvert
Date: Wed Mar 7 10:17:58 2007
New Revision: 515676
URL: http://svn.apache.org/viewvc?view=rev&rev=515676
Log:
Send message outside of afterCompletion() to avoid synchronization ordering and
transaction blocking issues.
Modified:
incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
Modified:
incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java?view=diff&rev=515676&r1=515675&r2=515676
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
(original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
Wed Mar 7 10:17:58 2007
@@ -98,13 +98,18 @@
inonly.setInMessage(nmsg);
_ode._scheduler.registerSynchronizer(new
Scheduler.Synchronizer() {
public void afterCompletion(boolean success) {
- if (success)
- try {
- _ode.getChannel().send(inonly);
- } catch (MessagingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ if (success) {
+ _ode._executorService.submit( new Runnable() {
+ public void run() {
+ try {
+ _ode.getChannel().send(inonly);
+ } catch (MessagingException e) {
+ String errmsg = "Exception while
sending in-only message to JBI for ODE mex " + odeMex;
+ __log.error(errmsg, e);
+ }
+ }
+ });
+ }
}
public void beforeCompletion() {
@@ -119,14 +124,19 @@
inout.setInMessage(nmsg);
_ode._scheduler.registerSynchronizer(new
Scheduler.Synchronizer() {
public void afterCompletion(boolean success) {
- if (success)
- try {
-
_outstandingExchanges.put(inout.getExchangeId(), odeMex.getMessageExchangeId());
- _ode.getChannel().send(inout);
- } catch (MessagingException e) {
- String errmsg = "Error sending request-only
message to JBI for ODE mex " + odeMex;
- __log.error(errmsg, e);
- }
+ if (success) {
+ _ode._executorService.submit( new Runnable() {
+ public void run() {
+ try {
+
_outstandingExchanges.put(inout.getExchangeId(), odeMex.getMessageExchangeId());
+ _ode.getChannel().send(inout);
+ } catch (MessagingException e) {
+ String errmsg = "Exception while
sending request-only message to JBI for ODE mex " + odeMex;
+ __log.error(errmsg, e);
+ }
+ }
+ });
+ }
}
public void beforeCompletion() {