You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/01/31 09:08:30 UTC

svn commit: r1238225 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-jms/src/main/java/org/apache/camel/component/jms/ components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ components/camel-jms/src...

Author: davsclaus
Date: Tue Jan 31 08:08:29 2012
New Revision: 1238225

URL: http://svn.apache.org/viewvc?rev=1238225&view=rev
Log:
CAMEL-4958: Added spring errorHandler to JMS listener, to avoid Spring complaining, and allow to configure logging levels to tune verbosity.

Added:
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultSpringErrorHandler.java
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.java
      - copied, changed from r1238148, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java
    camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml
      - copied, changed from r1238148, camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.xml
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java
    camel/trunk/components/camel-jms/src/test/resources/log4j.properties

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java Tue Jan 31 08:08:29 2012
@@ -62,7 +62,11 @@ public class LoggingExceptionHandler imp
                 // do not log stacktrace for intended rollbacks
                 logger.log(msg);
             } else {
-                logger.log(msg, exception);
+                if (exception != null) {
+                    logger.log(msg, exception);
+                } else {
+                    logger.log(msg);
+                }
             }
         } catch (Throwable e) {
             // the logging exception handler must not cause new exceptions to occur
@@ -70,6 +74,9 @@ public class LoggingExceptionHandler imp
     }
 
     protected boolean isCausedByRollbackExchangeException(Throwable exception) {
+        if (exception == null) {
+            return false;
+        }
         if (exception instanceof RollbackExchangeException) {
             return true;
         } else if (exception.getCause() != null) {

Added: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultSpringErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultSpringErrorHandler.java?rev=1238225&view=auto
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultSpringErrorHandler.java (added)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultSpringErrorHandler.java Tue Jan 31 08:08:29 2012
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms;
+
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.impl.LoggingExceptionHandler;
+import org.springframework.util.ErrorHandler;
+
+/**
+ * A default Spring {@link ErrorHandler} that logs the exception, according to configuration options.
+ */
+public class DefaultSpringErrorHandler implements ErrorHandler {
+
+    private final LoggingExceptionHandler handler;
+    private final boolean logStackTrace;
+
+    public DefaultSpringErrorHandler(Class owner, LoggingLevel level, boolean logStackTrace) {
+        this.handler = new LoggingExceptionHandler(owner, level);
+        this.logStackTrace = logStackTrace;
+    }
+
+    @Override
+    public void handleError(Throwable throwable) {
+        if (logStackTrace) {
+            handler.handleException("Execution of JMS message listener failed", throwable);
+        } else {
+            handler.handleException("Execution of JMS message listener failed. Caused by: [" + throwable.getMessage() + "]", null);
+        }
+    }
+
+}

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java Tue Jan 31 08:08:29 2012
@@ -29,7 +29,6 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.RollbackExchangeException;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.LoggingExceptionHandler;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.AsyncProcessorHelper;
@@ -125,9 +124,12 @@ public class EndpointMessageListener imp
         }
 
         // an exception occurred so rethrow to trigger rollback on JMS listener
+        // the JMS listener will use the error handler to handle the uncaught exception
         if (rce != null) {
-            handleException(rce);
             LOG.trace("onMessage END throwing exception: {}", rce.getMessage());
+            // Spring message listener container will handle uncaught exceptions
+            // being thrown from this onMessage, and will us the ErrorHandler configured
+            // on the JmsEndpoint to handle the exception
             throw rce;
         }
 
@@ -213,8 +215,10 @@ public class EndpointMessageListener imp
                     // method and rethrow it
                     exchange.setException(rce);
                 } else {
-                    // we were done async, so use the Camel built in exception handler to deal with it
-                    handleException(rce);
+                    // we were done async, so use the endpoint error handler
+                    if (endpoint.getErrorHandler() != null) {
+                        endpoint.getErrorHandler().handleError(rce);
+                    }
                 }
             }
         }
@@ -256,9 +260,6 @@ public class EndpointMessageListener imp
     }
 
     public ExceptionHandler getExceptionHandler() {
-        if (exceptionHandler == null) {
-            exceptionHandler = new LoggingExceptionHandler(getClass());
-        }
         return exceptionHandler;
     }
 
@@ -398,15 +399,6 @@ public class EndpointMessageListener imp
         return destination;
     }
 
-    /**
-     * Handles the given exception using the {@link #getExceptionHandler()}
-     *
-     * @param t the exception to handle
-     */
-    protected void handleException(Throwable t) {
-        getExceptionHandler().handleException(t);
-    }
-
     @Override
     public String toString() {
         return "EndpointMessageListener[" + endpoint + "]";

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Tue Jan 31 08:08:29 2012
@@ -23,6 +23,7 @@ import javax.jms.Session;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
@@ -210,8 +211,16 @@ public class JmsComponent extends Defaul
 
     public void setErrorHandler(ErrorHandler errorHandler) {
         getConfiguration().setErrorHandler(errorHandler);
-    }    
-    
+    }
+
+    public void setErrorHandlerLoggingLevel(LoggingLevel errorHandlerLoggingLevel) {
+        getConfiguration().setErrorHandlerLoggingLevel(errorHandlerLoggingLevel);
+    }
+
+    public void setErrorHandlerLogStackTrace(boolean errorHandlerLogStackTrace) {
+        getConfiguration().setErrorHandlerLogStackTrace(errorHandlerLogStackTrace);
+    }
+
     public void setExplicitQosEnabled(boolean explicitQosEnabled) {
         getConfiguration().setExplicitQosEnabled(explicitQosEnabled);
     }

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java Tue Jan 31 08:08:29 2012
@@ -24,6 +24,7 @@ import javax.jms.Message;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -68,7 +69,9 @@ public class JmsConfiguration implements
     // Used to configure the spring Container
     private ExceptionListener exceptionListener;
     private ConsumerType consumerType = ConsumerType.Default;
-    private ErrorHandler errorHandler;    
+    private ErrorHandler errorHandler;
+    private LoggingLevel errorHandlerLoggingLevel = LoggingLevel.WARN;
+    private boolean errorHandlerLogStackTrace = true;
     private boolean autoStartup = true;
     private boolean acceptMessagesWhileStopping;
     private String clientId;
@@ -494,7 +497,23 @@ public class JmsConfiguration implements
     public ErrorHandler getErrorHandler() {
         return errorHandler;
     }
-    
+
+    public LoggingLevel getErrorHandlerLoggingLevel() {
+        return errorHandlerLoggingLevel;
+    }
+
+    public void setErrorHandlerLoggingLevel(LoggingLevel errorHandlerLoggingLevel) {
+        this.errorHandlerLoggingLevel = errorHandlerLoggingLevel;
+    }
+
+    public boolean isErrorHandlerLogStackTrace() {
+        return errorHandlerLogStackTrace;
+    }
+
+    public void setErrorHandlerLogStackTrace(boolean errorHandlerLogStackTrace) {
+        this.errorHandlerLogStackTrace = errorHandlerLogStackTrace;
+    }
+
     @Deprecated
     public boolean isSubscriptionDurable() {
         return subscriptionDurable;
@@ -876,6 +895,9 @@ public class JmsConfiguration implements
 
         if (errorHandler != null) {
             container.setErrorHandler(errorHandler);
+        } else {
+            ErrorHandler handler = new DefaultSpringErrorHandler(EndpointMessageListener.class, getErrorHandlerLoggingLevel(), isErrorHandlerLogStackTrace());
+            container.setErrorHandler(handler);
         }
 
         container.setAcceptMessagesWhileStopping(acceptMessagesWhileStopping);

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Tue Jan 31 08:08:29 2012
@@ -34,6 +34,7 @@ import javax.jms.Topic;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.MultipleConsumersSupport;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
@@ -548,8 +549,23 @@ public class JmsEndpoint extends Default
     public ErrorHandler getErrorHandler() {
         return getConfiguration().getErrorHandler();
     }
+
+    @ManagedAttribute
+    public LoggingLevel getErrorHandlerLoggingLevel() {
+        return getConfiguration().getErrorHandlerLoggingLevel();
+    }
     
     @ManagedAttribute
+    public boolean isErrorHandlerLogStackTrace() {
+        return getConfiguration().isErrorHandlerLogStackTrace();
+    }
+
+    @ManagedAttribute
+    public void setErrorHandlerLogStackTrace(boolean errorHandlerLogStackTrace) {
+        getConfiguration().setErrorHandlerLogStackTrace(errorHandlerLogStackTrace);
+    }
+
+    @ManagedAttribute
     public int getIdleTaskExecutionLimit() {
         return getConfiguration().getIdleTaskExecutionLimit();
     }

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java Tue Jan 31 08:08:29 2012
@@ -25,6 +25,7 @@ import javax.jms.Session;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
+import org.apache.camel.component.jms.DefaultSpringErrorHandler;
 import org.apache.camel.component.jms.ReplyToType;
 import org.springframework.jms.listener.AbstractMessageListenerContainer;
 import org.springframework.jms.listener.DefaultMessageListenerContainer;
@@ -184,6 +185,8 @@ public class PersistentQueueReplyManager
         }
         if (endpoint.getErrorHandler() != null) {
             answer.setErrorHandler(endpoint.getErrorHandler());
+        } else {
+            answer.setErrorHandler(new DefaultSpringErrorHandler(PersistentQueueReplyManager.class, endpoint.getErrorHandlerLoggingLevel(), endpoint.isErrorHandlerLogStackTrace()));
         }
         if (endpoint.getReceiveTimeout() >= 0) {
             answer.setReceiveTimeout(endpoint.getReceiveTimeout());

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java Tue Jan 31 08:08:29 2012
@@ -24,6 +24,7 @@ import javax.jms.TemporaryQueue;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
+import org.apache.camel.component.jms.DefaultSpringErrorHandler;
 import org.springframework.jms.listener.AbstractMessageListenerContainer;
 import org.springframework.jms.listener.DefaultMessageListenerContainer;
 import org.springframework.jms.support.destination.DestinationResolver;
@@ -113,7 +114,9 @@ public class TemporaryQueueReplyManager 
         }
         if (endpoint.getErrorHandler() != null) {
             answer.setErrorHandler(endpoint.getErrorHandler());
-        }        
+        } else {
+            answer.setErrorHandler(new DefaultSpringErrorHandler(TemporaryQueueReplyManager.class, endpoint.getErrorHandlerLoggingLevel(), endpoint.isErrorHandlerLogStackTrace()));
+        }
         if (endpoint.getReceiveTimeout() >= 0) {
             answer.setReceiveTimeout(endpoint.getReceiveTimeout());
         }

Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java Tue Jan 31 08:08:29 2012
@@ -44,7 +44,7 @@ public class JMSTransactionErrorHandlerT
         mock.expectedBodiesReceived("Bye World");
         // success at 3rd attempt
         mock.message(0).header("count").isEqualTo(3);
-        // and since it was Camel doing the redelivey we should have headers for this
+        // and since it was Camel doing the redelivery we should have headers for this
         mock.message(0).header(Exchange.REDELIVERED).isEqualTo(true);
         mock.message(0).header(Exchange.REDELIVERY_COUNTER).isEqualTo(2);
         // and not JMS doing the redelivery

Copied: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.java (from r1238148, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.java&p1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java&r1=1238148&r2=1238225&rev=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.java Tue Jan 31 08:08:29 2012
@@ -18,52 +18,33 @@ package org.apache.camel.component.jms.t
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelSpringTestSupport;
 import org.junit.Test;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
- * To demonstrate transacted with minimal configuration.
+ *
  */
-public class JMSTransactionErrorHandlerTest extends CamelSpringTestSupport {
+public class JMSTransactionRollbackTest extends CamelSpringTestSupport {
 
     protected ClassPathXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext(
-            "/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.xml");
-    }
-
-    protected int getExpectedRouteCount() {
-        return 1;
+            "/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml");
     }
 
     @Test
-    public void testTransactionSuccess() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-        mock.expectedBodiesReceived("Bye World");
-        // success at 3rd attempt
-        mock.message(0).header("count").isEqualTo(3);
-        // and since it was Camel doing the redelivey we should have headers for this
-        mock.message(0).header(Exchange.REDELIVERED).isEqualTo(true);
-        mock.message(0).header(Exchange.REDELIVERY_COUNTER).isEqualTo(2);
-        // and not JMS doing the redelivery
-        mock.message(0).header("JMSRedelivered").isEqualTo(false);
+    public void testTransactionRollback() throws Exception {
+        getMockEndpoint("mock:before").expectedMessageCount(6);
+        getMockEndpoint("mock:result").expectedMessageCount(0);
 
         template.sendBody("activemq:queue:okay", "Hello World");
 
-        mock.assertIsSatisfied();
+        assertMockEndpointsSatisfied();
     }
 
     public static class MyProcessor implements Processor {
-        private int count;
-
         public void process(Exchange exchange) throws Exception {
-            if (++count <= 2) {
-                throw new IllegalArgumentException("Forced Exception number " + count + ", please retry");
-            }
-            exchange.getIn().setBody("Bye World");
-            exchange.getIn().setHeader("count", count);
+            throw new IllegalArgumentException("Forced Exception");
         }
     }
 

Modified: camel/trunk/components/camel-jms/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/log4j.properties?rev=1238225&r1=1238224&r2=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/log4j.properties (original)
+++ camel/trunk/components/camel-jms/src/test/resources/log4j.properties Tue Jan 31 08:08:29 2012
@@ -16,10 +16,17 @@
 ## ---------------------------------------------------------------------------
 
 #
-# The logging properties used during tests..
+# The logging properties used
 #
 log4j.rootLogger=INFO, out
 
+#log4j.logger.org.apache.activemq.spring=WARN
+#log4j.logger.org.apache.camel.component.jms=TRACE
+#log4j.logger.org.apache.camel.component.jms.reply.CorrelationMap=DEBUG
+#log4j.logger.org.apache.camel.component.jms.reply=TRACE
+#log4j.logger.org.apache.camel=DEBUG
+#log4j.logger.org.springframework.jms.listener=TRACE
+
 # CONSOLE appender not used by default
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
@@ -32,12 +39,3 @@ log4j.appender.out.layout.ConversionPatt
 log4j.appender.out.file=target/camel-jms-test.log
 log4j.appender.out.append=true
 
-log4j.logger.org.apache.camel.impl.converter=WARN
-log4j.logger.org.apache.camel.management=WARN
-log4j.logger.org.apache.camel.impl.DefaultPackageScanClassResolver=WARN
-#log4j.logger.org.apache.activemq.spring=WARN
-#log4j.logger.org.apache.camel.component.jms=TRACE
-#log4j.logger.org.apache.camel.component.jms.reply.CorrelationMap=DEBUG
-#log4j.logger.org.apache.camel.component.jms.reply=TRACE
-#log4j.logger.org.apache.camel=DEBUG
-#log4j.logger.org.springframework.jms.listener=TRACE

Copied: camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml (from r1238148, camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml?p2=camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml&p1=camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.xml&r1=1238148&r2=1238225&rev=1238225&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionErrorHandlerTest.xml (original)
+++ camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionRollbackTest.xml Tue Jan 31 08:08:29 2012
@@ -22,8 +22,6 @@
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
 
-    <!-- START SNIPPET: e1 -->
-    <!-- setup JMS connection factory -->
     <bean id="poolConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
         <property name="maxConnections" value="8"/>
         <property name="connectionFactory" ref="jmsConnectionFactory"/>
@@ -33,52 +31,35 @@
         <property name="brokerURL" value="vm://localhost?broker.persistent=false&amp;broker.useJmx=false"/>
     </bean>
 
-    <!-- setup spring jms TX manager -->
     <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
         <property name="connectionFactory" ref="poolConnectionFactory"/>
     </bean>
 
-    <!-- define our activemq component -->
     <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
         <property name="connectionFactory" ref="poolConnectionFactory"/>
-        <!-- define the jms consumer/producer as transacted -->
         <property name="transacted" value="true"/>
-        <!-- setup the transaction manager to use -->
-        <!-- if not provided then Camel will automatic use a JmsTransactionManager, however if you
-             for instance use a JTA transaction manager then you must configure it -->
         <property name="transactionManager" ref="jmsTransactionManager"/>
+        <!-- we do not want any exceptions to be logged -->
+        <property name="errorHandlerLoggingLevel" value="OFF"/>
+        <property name="errorHandlerLogStackTrace" value="false"/>
     </bean>
-    <!-- END SNIPPET: e1 -->
 
-    <!-- START SNIPPET: e3 -->
-    <!-- use a transaction error handler -->
-    <bean id="myErrorHandler" class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder">
-        <property name="redeliveryPolicy" ref="myPolicy"/>
-    </bean>
-    <!-- and let it try to redeliver up till 4 times -->
-    <bean id="myPolicy" class="org.apache.camel.processor.RedeliveryPolicy">
-        <property name="maximumRedeliveries" value="4"/>
-    </bean>
-    <!-- END SNIPPET: e3 -->
-
-    <!-- START SNIPPET: e2 -->
     <camelContext xmlns="http://camel.apache.org/schema/spring">
-        <!-- disable JMX during testing -->
-        <jmxAgent id="agent" disabled="true"/>
-        <route errorHandlerRef="myErrorHandler">
-            <!-- 1: from the jms queue -->
+
+      <!-- we do not want any exceptions to be logged -->
+      <errorHandler id="txEH" type="TransactionErrorHandler">
+        <redeliveryPolicy logStackTrace="false" logExhausted="false"/>
+      </errorHandler>
+
+        <route errorHandlerRef="txEH">
             <from uri="activemq:queue:okay"/>
-            <!-- 2: mark this route as transacted -->
             <transacted/>
-            <!-- 3: call our business logic that is myProcessor -->
+            <to uri="mock:before"/>
             <process ref="myProcessor"/>
-            <!-- 4: if success then send it to the mock -->
             <to uri="mock:result"/>
         </route>
     </camelContext>
 
-    <bean id="myProcessor" class="org.apache.camel.component.jms.tx.JMSTransactionalClientTest$MyProcessor"/>
-    <!-- END SNIPPET: e2 -->
-
+    <bean id="myProcessor" class="org.apache.camel.component.jms.tx.JMSTransactionRollbackTest$MyProcessor"/>
 
 </beans>