
Hi Has anyone successfully configured the JMSQueueAppender to send messages to a Websphere MQ server? I'm really struggling with this. Hope someone can assist. Here is my configuration file: logback-test.xml <?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern> %d{HH:mm:ss} [%thread] %-5level %logger{0} - %msg%n </pattern> </encoder> </appender> <appender name="QUEUE" class="com.foo.bar.common.log.CustomJMSQueueAppender"> <InitialContextFactoryName>org.apache.activemq.jndi.ActiveMQInitialContextFactory</InitialContextFactoryName> <ProviderURL>tcp://10.10.10.10:1414</ProviderURL> <QueueConnectionFactoryBindingName>ConnectionFactory</QueueConnectionFactoryBindingName> <QueueBindingName>app_test_log</QueueBindingName> <!-- Only messages with marker JMS gets through to queue--> <filter class="com.foo.bar.common.log.MarkerFilter"> <marker>JMS</marker> <onMismatch>DENY</onMismatch> <onMatch>ACCEPT</onMatch> </filter> </appender> <root level="TRACE" > <appender-ref ref="STDOUT" /> <appender-ref ref="QUEUE" /> </root> </configuration> My MQ guy who sat up the queue gave me these values: qmanager is ESAPFOK9 machine is 10.10.10.10 Channel is app.logging queue is app_test_log These are the essential parts of my Maven2 pom file: <?xml version="1.0" encoding="UTF-8"?> (...) <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>0.9.21</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> <version>5.0.0</version> <scope>test</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging-api</artifactId> </exclusion> <exclusion> <groupId>org.apache.activemq</groupId> <artifactId>activeio-core</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project> I made a really simple Junit test: public class CustomJMSQueueAppenderTest { private final static Logger logger = LoggerFactory.getLogger(CustomJMSQueueAppenderTest.class); private static Marker JMS_LOG = MarkerFactory.getMarker("JMS_LOG"); @Test public void sendLogMessageToMqAndFile(){ logger.info("New test run: {}", new Date()); logger.info("This message will only be sent to console"); logger.info(JMS_LOG, "This message is to be sent both to console and to JMS"); } } But alas, this was the result: Running com.foo.bar.common.log.CustomJMSQueueAppenderTest 15:50:41,860 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/usr/IBM/build/frontend-trunk/delegator/foobar/target/test-classes/logback-test.xml] 15:50:42,329 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 15:50:42,411 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 15:50:42,431 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 15:50:42,593 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [encoder] on top of the object stack. 15:50:42,872 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [filter] on top of the object stack. 15:50:42,961 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.foo.bar.common.log.CustomJMSQueueAppender] 15:50:42,981 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [QUEUE] 15:50:43,070 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [filter] on top of the object stack. 15:50:47,121 |-ERROR in com.foo.bar.common.log.CustomJMSQueueAppender[QUEUE] - Error while activating options for appender named [QUEUE]. javax.jms.JMSException: java.io.EOFException at javax.jms.JMSException: java.io.EOFException at at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49) at at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1178) at at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1262) at at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:292) at at org.apache.activemq.ActiveMQConnection.createQueueSession(ActiveMQConnection.java:1123) at at ch.qos.logback.classic.net.JMSQueueAppender.start(JMSQueueAppender.java:113) at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:96) at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:315) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:194) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:180) at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:52) at at ch.qos.logback.core.joran.spi.Interpreter.play(Interpreter.java:332) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:126) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:93) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:52) at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:60) at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:121) at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at at java.lang.J9VMInternals.initializeImpl(Native Method) at at java.lang.J9VMInternals.initialize(J9VMInternals.java:194) at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121) at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254) at at com.foo.bar.common.log.CustomJMSQueueAppenderTest.<clinit>(CustomJMSQueueAppenderTest.java:13) at at java.lang.J9VMInternals.initializeImpl(Native Method) at at java.lang.J9VMInternals.initialize(J9VMInternals.java:194) at at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67) at at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at at java.lang.reflect.Constructor.newInstance(Constructor.java:522) at at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:202) at at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:251) at at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:248) at at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) at at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) at at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at at java.lang.reflect.Method.invoke(Method.java:618) at at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) at at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) Caused by: java.io.EOFException at at java.io.DataInputStream.readFully(DataInputStream.java:204) at at java.io.DataInputStream.readInt(DataInputStream.java:380) at at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:268) at at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:192) at at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:184) at at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:172) at at java.lang.Thread.run(Thread.java:810) Now I'm very lost. Hoping someone can help me out. Best regards Espen