Methods Summary |
---|
public void | activateOptions()Overriding this method to activate the options for this class
i.e. Looking up the Connection factory ...
QueueConnectionFactory queueConnectionFactory;
try {
Context ctx = getInitialContext();
queueConnectionFactory = (QueueConnectionFactory) ctx.lookup(queueConnectionFactoryBindingName);
queueConnection = queueConnectionFactory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ctx.lookup(queueBindingName);
queueSender = queueSession.createSender(queue);
queueConnection.start();
ctx.close();
} catch(Exception e) {
errorHandler.error("Error while activating options for appender named ["+name+
"].", e, ErrorCode.GENERIC_FAILURE);
}
|
public void | append(org.apache.log4j.spi.LoggingEvent event)This method called by {@link AppenderSkeleton#doAppend} method to
do most of the real appending work. The LoggingEvent will be
be wrapped in an ObjectMessage to be put on the JMS queue.
if(!checkEntryConditions()) {
return;
}
try {
ObjectMessage msg = queueSession.createObjectMessage();
msg.setObject(event);
queueSender.send(msg);
} catch(Exception e) {
errorHandler.error("Could not send message in JMSQueueAppender ["+name+"].", e,
ErrorCode.GENERIC_FAILURE);
}
|
protected boolean | checkEntryConditions()
String fail = null;
if(this.queueConnection == null) {
fail = "No QueueConnection";
} else if(this.queueSession == null) {
fail = "No QueueSession";
} else if(this.queueSender == null) {
fail = "No QueueSender";
}
if(fail != null) {
errorHandler.error(fail +" for JMSQueueAppender named ["+name+"].");
return false;
} else {
return true;
}
|
public synchronized void | close()Close this JMSQueueAppender. Closing releases all resources used by the
appender. A closed appender cannot be re-opened.
if(this.closed)
return;
LogLog.debug("Closing appender ["+name+"].");
this.closed = true;
try {
if(queueSession != null)
queueSession.close();
if(queueConnection != null)
queueConnection.close();
} catch(Exception e) {
LogLog.error("Error while closing JMSQueueAppender ["+name+"].", e);
}
// Help garbage collection
queueSender = null;
queueSession = null;
queueConnection = null;
|
protected javax.naming.InitialContext | getInitialContext()
try {
Hashtable ht = new Hashtable();
//Populate property hashtable with data to retrieve the context.
ht.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
ht.put(Context.PROVIDER_URL, providerUrl);
return (new InitialContext(ht));
} catch (NamingException ne) {
LogLog.error("Could not get initial context with ["+initialContextFactory + "] and [" + providerUrl + "].");
throw ne;
}
|
public java.lang.String | getInitialContextFactory()Returns the value of the InitialContextFactory option.
return initialContextFactory;
|
public java.lang.String | getProviderUrl()Returns the value of the ProviderUrl option.
return providerUrl;
|
public java.lang.String | getQueueBindingName()Returns the value of the QueueBindingName option.
return queueBindingName;
|
public java.lang.String | getQueueConnectionFactoryBindingName()Returns the value of the QueueConnectionFactoryBindingName option.
return queueConnectionFactoryBindingName;
|
public boolean | requiresLayout()
return false;
|
public void | setInitialContextFactory(java.lang.String initialContextFactory)The InitialContextFactory option takes a string value.
Its value, along with the ProviderUrl option will be used
to get the InitialContext.
this.initialContextFactory = initialContextFactory;
|
public void | setProviderUrl(java.lang.String providerUrl)The ProviderUrl option takes a string value.
Its value, along with the InitialContextFactory option will be used
to get the InitialContext.
this.providerUrl = providerUrl;
|
public void | setQueueBindingName(java.lang.String queueBindingName)The QueueBindingName option takes a
string value. Its value will be used to lookup the appropriate
destination Queue from the JNDI context.
this.queueBindingName = queueBindingName;
|
public void | setQueueConnectionFactoryBindingName(java.lang.String queueConnectionFactoryBindingName)The QueueConnectionFactoryBindingName option takes a
string value. Its value will be used to lookup the appropriate
QueueConnectionFactory from the JNDI context.
this.queueConnectionFactoryBindingName = queueConnectionFactoryBindingName;
|