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&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>