Hello everyone.
I have a problem when trying to connect to Qpid server, the class
AMQConnection fails giving a timeout error, this only happens if I include
this code in a log4j appender, if I put the same code outside the appender
the connection works well.
the goal is to write all the log4j messages to a qpid server using a log4j
appender.
any ideas??
the appender
code....---------------------------------------------------------------------
package com.wfg.testqpid.appender;
import java.util.Date;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.spi.ErrorCode;
import org.apache.log4j.spi.LoggingEvent;
import javax.jms.Connection;
import javax.jms.Session;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.jms.ConnectionURL;
public class JMSAppenderQPIDQ2 extends AppenderSkeleton{
private Session session = null;
private AMQConnection connection = null;
private static String url =
"amqp://test:nolose@clientid/test?brokerlist='tcp://localhost:5672'";
private boolean TRANSACTED = false;
public void activateOptions() {
try {
System.out.println("version 2");
System.out.println(url);
connection = new AMQConnection(url);
connection.start();
System.out.println("we start the connection");
session = connection.createSession(TRANSACTED,
Session.AUTO_ACKNOWLEDGE);
System.out.println("OK TEST "+ new Date());
} catch (Exception e) {
e.printStackTrace();
}
}
public void append(LoggingEvent event) {
}
public boolean requiresLayout() {
return false;
}
public synchronized void close() {
}
}
the log4j properties..
--------------------------------------------------------------------
log4j.rootCategory=ALL, CONSOLE, JMSQpidQ
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d{HH:mm:ss} [%p] %m%n
log4j.appender.FILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.file = /home/miguel/prueba.log
log4j.appender.FILE.append = true
log4j.appender.FILE.DatePattern = '.'yyyyMMdd
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern = %d{HH:mm:ss} [%p] %m%n
log4j.appender.JMSQpidQ = com.wfg.testqpid.appender.JMSAppenderQPIDQ2
the test class
..................-------------------------------------------------------
package com.wfg.testqpid;
import java.net.URL;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.helpers.Loader;
public class TheTest {
static Logger logger = Logger.getLogger(TheTest.class);
public TheTest() {
super();
URL url = Loader.getResource("log4j.properties");
PropertyConfigurator.configure(url);
}
public void generaTest(){
logger.info("Start"+ new Date());
logger.info("End "+ new Date());
}
public static void main(String[] args) {
new TheTest().generaTest();
System.exit(0);
}
}
the error log...
-------------------------------------------------------------
version 2
amqp://test:nolose@clientid/test?brokerlist='tcp://localhost:5672'
17:50:57 [DEBUG]
Connection(1):amqp://test:********@clientid/test?brokerlist='tcp://localhost:5672'
17:50:57 [DEBUG] AMQP version 0-10
17:50:57 [DEBUG] Using ProtocolVersion for Session:0-10
17:50:57 [DEBUG] New Method Dispatcher:AMQProtocolSession[null]
17:50:57 [DEBUG] Creating content header body factory
17:50:57 [DEBUG] Creating content body factory
17:50:57 [DEBUG] Connecting with ProtocolHandler Version:0-10
17:50:57 [DEBUG] connecting to host: localhost port: 5672 vhost: test
username: test password: ********
17:50:57 [DEBUG] SO_RCVBUF : 65535
17:50:57 [DEBUG] SO_SNDBUF : 65535
17:50:57 [DEBUG] TCP_NODELAY : true
17:50:57 [DEBUG] SEND: [conn:6de1dadb] AMQP.1 0-10
17:52:57 [INFO] Unable to connect to broker at tcp://localhost:5672
org.apache.qpid.AMQException: Cannot connect to broker: close() timed out
[error code 200: reply success]
at
org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:241)
at
org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:604)
at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:383)
at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:219)
at
com.wfg.testqpid.appender.JMSAppenderQPIDQ2.activateOptions(JMSAppenderQPIDQ2.java:56)
at
org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at
org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
at
org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at
org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at
org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:117)
at com.wfg.testqpid.TheTest.<clinit>(TheTest.java:16)
Caused by: org.apache.qpid.transport.ConnectionException: close() timed out
at org.apache.qpid.transport.Connection.close(Connection.java:640)
at org.apache.qpid.transport.Connection.close(Connection.java:581)
at org.apache.qpid.transport.Connection.connect(Connection.java:273)
at
org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:221)
... 16 more
org.apache.qpid.AMQConnectionFailureException: close() timed out [error code
200: reply success]
at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:460)
at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:219)
at
com.wfg.testqpid.appender.JMSAppenderQPIDQ2.activateOptions(JMSAppenderQPIDQ2.java:56)
at
org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at
org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)17:52:57
[DEBUG] All failover methods exhausted
17:52:57 [DEBUG] Are we connected:false
17:52:57 [DEBUG] Last attempted ProtocolHandler Version:0-10
17:50:57 [DEBUG] RECV: [conn:6de1dadb] AMQP.1 0-10
at
org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at
org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at
org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:117)
at com.wfg.testqpid.TheTest.<clinit>(TheTest.java:16)
Caused by: org.apache.qpid.AMQException: Cannot connect to broker: close()
timed out [error code 200: reply success]
at
org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:241)
at
org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:604)
at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:383)
... 14 more
Caused by: org.apache.qpid.transport.ConnectionException: close() timed out
at org.apache.qpid.transport.Connection.close(Connection.java:640)
at org.apache.qpid.transport.Connection.close(Connection.java:581)
at org.apache.qpid.transport.Connection.connect(Connection.java:273)
at
org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:221)
... 16 more
--
View this message in context:
http://qpid.2158936.n2.nabble.com/The-AMQConnection-class-fail-to-connect-when-use-in-log4j-appender-tp7606582.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]