You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/09/06 06:58:36 UTC
[03/29] git commit: Split out JMS appender and receiver into new
log4j module.
Split out JMS appender and receiver into new log4j module.
git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/log4j2/branches/messaging-module@1608317 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1274408e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1274408e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1274408e
Branch: refs/heads/master
Commit: 1274408e2aa77557e8061c7e74979a40b7f245c9
Parents: 9b71816
Author: mattsicker <ma...@unknown>
Authored: Mon Jul 7 00:13:53 2014 +0000
Committer: mattsicker <ma...@unknown>
Committed: Mon Jul 7 00:13:53 2014 +0000
----------------------------------------------------------------------
.../core/appender/jms/JmsQueueAppender.java | 111 ---------
.../core/appender/jms/JmsTopicAppender.java | 112 ---------
.../log4j/core/appender/jms/package-info.java | 20 --
.../log4j/core/net/jms/AbstractJmsManager.java | 155 ------------
.../log4j/core/net/jms/AbstractJmsReceiver.java | 83 -------
.../log4j/core/net/jms/JmsQueueManager.java | 237 -------------------
.../log4j/core/net/jms/JmsQueueReceiver.java | 107 ---------
.../log4j/core/net/jms/JmsTopicManager.java | 237 -------------------
.../log4j/core/net/jms/JmsTopicReceiver.java | 105 --------
.../log4j/core/net/jms/package-info.java | 25 --
.../core/net/jms/JmsQueueAppenderTest.java | 83 -------
.../core/net/jms/JmsQueueFailoverTest.java | 122 ----------
.../log4j/core/net/jms/JmsQueueTest.java | 142 -----------
.../core/net/jms/JmsTopicFailoverTest.java | 121 ----------
.../log4j/core/net/jms/JmsTopicTest.java | 143 -----------
log4j-mom/pom.xml | 53 +++++
.../mom/jms/appender/JmsQueueAppender.java | 111 +++++++++
.../mom/jms/appender/JmsTopicAppender.java | 112 +++++++++
.../log4j/mom/jms/appender/package-info.java | 20 ++
.../mom/jms/receiver/AbstractJmsManager.java | 155 ++++++++++++
.../mom/jms/receiver/AbstractJmsReceiver.java | 83 +++++++
.../log4j/mom/jms/receiver/JmsQueueManager.java | 237 +++++++++++++++++++
.../mom/jms/receiver/JmsQueueReceiver.java | 107 +++++++++
.../log4j/mom/jms/receiver/JmsTopicManager.java | 237 +++++++++++++++++++
.../mom/jms/receiver/JmsTopicReceiver.java | 105 ++++++++
.../log4j/mom/jms/receiver/package-info.java | 25 ++
.../mom/jms/appender/JmsQueueAppenderTest.java | 85 +++++++
.../mom/jms/appender/JmsQueueFailoverTest.java | 122 ++++++++++
.../log4j/mom/jms/appender/JmsQueueTest.java | 144 +++++++++++
.../mom/jms/appender/JmsTopicFailoverTest.java | 121 ++++++++++
.../log4j/mom/jms/appender/JmsTopicTest.java | 144 +++++++++++
pom.xml | 1 +
32 files changed, 1862 insertions(+), 1803 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsQueueAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsQueueAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsQueueAppender.java
deleted file mode 100644
index 9b19631..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsQueueAppender.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * 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.logging.log4j.core.appender.jms;
-
-import java.io.Serializable;
-
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
-import org.apache.logging.log4j.core.net.jms.JmsQueueManager;
-import org.apache.logging.log4j.core.util.Booleans;
-
-/**
- * Appender to write to a JMS Queue.
- */
-@Plugin(name = "JMSQueue", category = "Core", elementType = "appender", printObject = true)
-public final class JmsQueueAppender extends AbstractAppender {
-
- private final JmsQueueManager manager;
-
- private JmsQueueAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
- final JmsQueueManager manager, final boolean ignoreExceptions) {
- super(name, filter, layout, ignoreExceptions);
- this.manager = manager;
- }
-
- /**
- * Actual writing occurs here.
- *
- * @param event The LogEvent.
- */
- @Override
- public void append(final LogEvent event) {
- try {
- manager.send(getLayout().toSerializable(event));
- } catch (final Exception ex) {
- throw new AppenderLoggingException(ex);
- }
- }
-
- /**
- * Create a JmsQueueAppender.
- * @param name The name of the Appender.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @param factoryBindingName The name to locate in the Context that provides the QueueConnectionFactory.
- * @param queueBindingName The name to use to locate the Queue.
- * @param userName The user ID to use to create the Queue Connection.
- * @param password The password to use to create the Queue Connection.
- * @param layout The layout to use (defaults to SerializedLayout).
- * @param filter The Filter or null.
- * @param ignore If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise
- * they are propagated to the caller.
- * @return The JmsQueueAppender.
- */
- @PluginFactory
- public static JmsQueueAppender createAppender(
- @PluginAttribute("name") final String name,
- @PluginAttribute("factoryName") final String factoryName,
- @PluginAttribute("providerURL") final String providerURL,
- @PluginAttribute("urlPkgPrefixes") final String urlPkgPrefixes,
- @PluginAttribute("securityPrincipalName") final String securityPrincipalName,
- @PluginAttribute("securityCredentials") final String securityCredentials,
- @PluginAttribute("factoryBindingName") final String factoryBindingName,
- @PluginAttribute("queueBindingName") final String queueBindingName,
- @PluginAttribute("userName") final String userName,
- @PluginAttribute("password") final String password,
- @PluginElement("Layout") Layout<? extends Serializable> layout,
- @PluginElement("Filter") final Filter filter,
- @PluginAttribute("ignoreExceptions") final String ignore) {
- if (name == null) {
- LOGGER.error("No name provided for JmsQueueAppender");
- return null;
- }
- final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
- final JmsQueueManager manager = JmsQueueManager.getJmsQueueManager(factoryName, providerURL, urlPkgPrefixes,
- securityPrincipalName, securityCredentials, factoryBindingName, queueBindingName, userName, password);
- if (manager == null) {
- return null;
- }
- if (layout == null) {
- layout = SerializedLayout.createLayout();
- }
- return new JmsQueueAppender(name, filter, layout, manager, ignoreExceptions);
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsTopicAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsTopicAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsTopicAppender.java
deleted file mode 100644
index 8793a9d..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/JmsTopicAppender.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.logging.log4j.core.appender.jms;
-
-import java.io.Serializable;
-
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
-import org.apache.logging.log4j.core.net.jms.JmsTopicManager;
-import org.apache.logging.log4j.core.util.Booleans;
-
-/**
- * Appender to write to a JMS Topic.
- */
-@Plugin(name = "JMSTopic", category = "Core", elementType = "appender", printObject = true)
-public final class JmsTopicAppender extends AbstractAppender {
-
- private final JmsTopicManager manager;
-
- private JmsTopicAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
- final JmsTopicManager manager, final boolean ignoreExceptions) {
- super(name, filter, layout, ignoreExceptions);
- this.manager = manager;
- }
-
- /**
- * Actual writing occurs here.
- * <p/>
- * @param event The LogEvent.
- */
- @Override
- public void append(final LogEvent event) {
- try {
- manager.send(getLayout().toSerializable(event));
- } catch (final Exception ex) {
- throw new AppenderLoggingException(ex);
- }
- }
-
- /**
- * Create a JmsTopicAppender.
- * @param name The name of the Appender.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @param factoryBindingName The name to locate in the Context that provides the TopicConnectionFactory.
- * @param topicBindingName The name to use to locate the Topic.
- * @param userName The userid to use to create the Topic Connection.
- * @param password The password to use to create the Topic Connection.
- * @param layout The layout to use (defaults to SerializedLayout).
- * @param filter The Filter or null.
- * @param ignore If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise
- * they are propagated to the caller.
- * @return The JmsTopicAppender.
- */
- @PluginFactory
- public static JmsTopicAppender createAppender(
- @PluginAttribute("name") final String name,
- @PluginAttribute("factoryName") final String factoryName,
- @PluginAttribute("providerURL") final String providerURL,
- @PluginAttribute("urlPkgPrefixes") final String urlPkgPrefixes,
- @PluginAttribute("securityPrincipalName") final String securityPrincipalName,
- @PluginAttribute("securityCredentials") final String securityCredentials,
- @PluginAttribute("factoryBindingName") final String factoryBindingName,
- @PluginAttribute("topicBindingName") final String topicBindingName,
- @PluginAttribute("userName") final String userName,
- @PluginAttribute("password") final String password,
- @PluginElement("Layout") Layout<? extends Serializable> layout,
- @PluginElement("Filters") final Filter filter,
- @PluginAttribute("ignoreExceptions") final String ignore) {
-
- if (name == null) {
- LOGGER.error("No name provided for JmsQueueAppender");
- return null;
- }
- final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
- final JmsTopicManager manager = JmsTopicManager.getJmsTopicManager(factoryName, providerURL, urlPkgPrefixes,
- securityPrincipalName, securityCredentials, factoryBindingName, topicBindingName, userName, password);
- if (manager == null) {
- return null;
- }
- if (layout == null) {
- layout = SerializedLayout.createLayout();
- }
- return new JmsTopicAppender(name, filter, layout, manager, ignoreExceptions);
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/package-info.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/package-info.java
deleted file mode 100644
index 029e2e9..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/jms/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 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.
- */
-/**
- * Appender classes for using JMS. These are directly configured through your log4j2 configuration file.
- */
-package org.apache.logging.log4j.core.appender.jms;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsManager.java
deleted file mode 100644
index cc7d3f9..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsManager.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.Serializable;
-import java.util.Properties;
-
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-
-import org.apache.logging.log4j.core.appender.AbstractManager;
-
-/**
- * Base Class for Managers of JMS connections.
- */
-public abstract class AbstractJmsManager extends AbstractManager {
-
- /**
- * The Constructor.
- * @param name The name of the Appender.
- */
- public AbstractJmsManager(final String name) {
- super(name);
- }
-
- /**
- * Create the InitialContext.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @return the InitialContext.
- * @throws NamingException if a naming error occurs.
- */
- protected static Context createContext(final String factoryName, final String providerURL,
- final String urlPkgPrefixes, final String securityPrincipalName,
- final String securityCredentials)
- throws NamingException {
-
- final Properties props = getEnvironment(factoryName, providerURL, urlPkgPrefixes, securityPrincipalName,
- securityCredentials);
- return new InitialContext(props);
- }
-
- /**
- * Looks up the name in the context.
- * @param ctx The Context.
- * @param name The name to locate.
- * @return The object to be located.
- * @throws NamingException If an error occurs locating the name.
- */
- protected static Object lookup(final Context ctx, final String name) throws NamingException {
- try {
- return ctx.lookup(name);
- } catch (final NameNotFoundException e) {
- LOGGER.warn("Could not find name [{}].", name);
- throw e;
- }
- }
-
- /**
- * Sets up the properties to pass to the InitialContext.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @return The Properties.
- */
- protected static Properties getEnvironment(final String factoryName, final String providerURL,
- final String urlPkgPrefixes, final String securityPrincipalName,
- final String securityCredentials) {
- final Properties props = new Properties();
- if (factoryName != null) {
- props.put(Context.INITIAL_CONTEXT_FACTORY, factoryName);
- if (providerURL != null) {
- props.put(Context.PROVIDER_URL, providerURL);
- } else {
- LOGGER.warn("The InitialContext factory name has been provided without a ProviderURL. " +
- "This is likely to cause problems");
- }
- if (urlPkgPrefixes != null) {
- props.put(Context.URL_PKG_PREFIXES, urlPkgPrefixes);
- }
- if (securityPrincipalName != null) {
- props.put(Context.SECURITY_PRINCIPAL, securityPrincipalName);
- if (securityCredentials != null) {
- props.put(Context.SECURITY_CREDENTIALS, securityCredentials);
- } else {
- LOGGER.warn("SecurityPrincipalName has been set without SecurityCredentials. " +
- "This is likely to cause problems.");
- }
- }
- return props;
- }
- return null;
- }
-
- /**
- * Send the message.
- * @param object The Object to sent.
- * @throws Exception if an error occurs.
- */
- public abstract void send(Serializable object) throws Exception;
-
- /**
- * Send the Object.
- * @param object The Object to send.
- * @param session The Session.
- * @param producer The MessageProducer.
- * @throws Exception if an error occurs.
- */
- public synchronized void send(final Serializable object, final Session session, final MessageProducer producer)
- throws Exception {
- try {
- Message msg;
- if (object instanceof String) {
- msg = session.createTextMessage();
- ((TextMessage) msg).setText((String) object);
- } else {
- msg = session.createObjectMessage();
- ((ObjectMessage) msg).setObject(object);
- }
- producer.send(msg);
- } catch (final JMSException ex) {
- LOGGER.error("Could not publish message via JMS {}", getName());
- throw ex;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsReceiver.java
deleted file mode 100644
index 5723070..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/AbstractJmsReceiver.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-import javax.jms.ObjectMessage;
-import javax.naming.Context;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.LogEventListener;
-
-/**
- * Abstract base class for receiving LogEvents over JMS. This class expects all messages to be serialized log events.
- */
-public abstract class AbstractJmsReceiver extends LogEventListener implements javax.jms.MessageListener {
-
- /**
- * Logger to capture diagnostics.
- */
- protected Logger logger = LogManager.getLogger(this.getClass().getName());
-
- /**
- * Listener that receives the event.
- * @param message The received message.
- */
- @Override
- public void onMessage(final javax.jms.Message message) {
- try {
- if (message instanceof ObjectMessage) {
- final ObjectMessage objectMessage = (ObjectMessage) message;
- final Serializable object = objectMessage.getObject();
- if (object instanceof LogEvent) {
- log((LogEvent) object);
- } else {
- logger.warn("Received message is of type " + object.getClass().getName() + ", was expecting LogEvent.");
- }
- } else {
- logger.warn("Received message is of type " + message.getJMSType()
- + ", was expecting ObjectMessage.");
- }
- } catch (final JMSException jmse) {
- logger.error("Exception thrown while processing incoming message.",
- jmse);
- }
- }
-
- /**
- * Looks up an object from the Context.
- * @param ctx The Context.
- * @param name The name of the object to locate.
- * @return The object.
- * @throws NamingException if an error occurs.
- */
- protected Object lookup(final Context ctx, final String name) throws NamingException {
- try {
- return ctx.lookup(name);
- } catch (final NameNotFoundException e) {
- logger.error("Could not find name [" + name + "].");
- throw e;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueManager.java
deleted file mode 100644
index 13c08f3..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueManager.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-import javax.jms.Queue;
-import javax.jms.QueueConnection;
-import javax.jms.QueueConnectionFactory;
-import javax.jms.QueueSender;
-import javax.jms.QueueSession;
-import javax.jms.Session;
-import javax.naming.Context;
-import javax.naming.NamingException;
-
-import org.apache.logging.log4j.core.appender.ManagerFactory;
-
-/**
- * Manager for a JMS Queue.
- */
-public class JmsQueueManager extends AbstractJmsManager {
-
- private static final JMSQueueManagerFactory FACTORY = new JMSQueueManagerFactory();
-
- private QueueInfo info;
- private final String factoryBindingName;
- private final String queueBindingName;
- private final String userName;
- private final String password;
- private final Context context;
-
- /**
- * The Constructor.
- * @param name The unique name of the connection.
- * @param context The context.
- * @param factoryBindingName The factory binding name.
- * @param queueBindingName The queue binding name.
- * @param userName The user name.
- * @param password The credentials for the user.
- * @param info The Queue connection info.
- */
- protected JmsQueueManager(final String name, final Context context, final String factoryBindingName,
- final String queueBindingName, final String userName, final String password,
- final QueueInfo info) {
- super(name);
- this.context = context;
- this.factoryBindingName = factoryBindingName;
- this.queueBindingName = queueBindingName;
- this.userName = userName;
- this.password = password;
- this.info = info;
- }
-
- /**
- * Obtain a JmsQueueManager.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @param factoryBindingName The name to locate in the Context that provides the QueueConnectionFactory.
- * @param queueBindingName The name to use to locate the Queue.
- * @param userName The userid to use to create the Queue Connection.
- * @param password The password to use to create the Queue Connection.
- * @return The JmsQueueManager.
- */
- public static JmsQueueManager getJmsQueueManager(final String factoryName, final String providerURL,
- final String urlPkgPrefixes, final String securityPrincipalName,
- final String securityCredentials, final String factoryBindingName,
- final String queueBindingName, final String userName,
- final String password) {
-
- if (factoryBindingName == null) {
- LOGGER.error("No factory name provided for JmsQueueManager");
- return null;
- }
- if (queueBindingName == null) {
- LOGGER.error("No topic name provided for JmsQueueManager");
- return null;
- }
-
- final String name = "JMSQueue:" + factoryBindingName + '.' + queueBindingName;
- return getManager(name, FACTORY, new FactoryData(factoryName, providerURL, urlPkgPrefixes,
- securityPrincipalName, securityCredentials, factoryBindingName, queueBindingName, userName, password));
- }
-
- @Override
- public synchronized void send(final Serializable object) throws Exception {
- if (info == null) {
- info = connect(context, factoryBindingName, queueBindingName, userName, password, false);
- }
- try {
- super.send(object, info.session, info.sender);
- } catch (final Exception ex) {
- cleanup(true);
- throw ex;
- }
- }
-
- @Override
- public void releaseSub() {
- if (info != null) {
- cleanup(false);
- }
- }
-
- private void cleanup(final boolean quiet) {
- try {
- info.session.close();
- } catch (final Exception e) {
- if (!quiet) {
- LOGGER.error("Error closing session for " + getName(), e);
- }
- }
- try {
- info.conn.close();
- } catch (final Exception e) {
- if (!quiet) {
- LOGGER.error("Error closing connection for " + getName(), e);
- }
- }
- info = null;
- }
-
- /**
- * Data for the factory.
- */
- private static class FactoryData {
- private final String factoryName;
- private final String providerURL;
- private final String urlPkgPrefixes;
- private final String securityPrincipalName;
- private final String securityCredentials;
- private final String factoryBindingName;
- private final String queueBindingName;
- private final String userName;
- private final String password;
-
- public FactoryData(final String factoryName, final String providerURL, final String urlPkgPrefixes,
- final String securityPrincipalName, final String securityCredentials,
- final String factoryBindingName, final String queueBindingName, final String userName,
- final String password) {
- this.factoryName = factoryName;
- this.providerURL = providerURL;
- this.urlPkgPrefixes = urlPkgPrefixes;
- this.securityPrincipalName = securityPrincipalName;
- this.securityCredentials = securityCredentials;
- this.factoryBindingName = factoryBindingName;
- this.queueBindingName = queueBindingName;
- this.userName = userName;
- this.password = password;
- }
- }
-
- private static QueueInfo connect(final Context context, final String factoryBindingName,
- final String queueBindingName, final String userName, final String password,
- final boolean suppress) throws Exception {
- try {
- final QueueConnectionFactory factory = (QueueConnectionFactory) lookup(context, factoryBindingName);
- QueueConnection conn;
- if (userName != null) {
- conn = factory.createQueueConnection(userName, password);
- } else {
- conn = factory.createQueueConnection();
- }
- final QueueSession sess = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
- final Queue queue = (Queue) lookup(context, queueBindingName);
- final QueueSender sender = sess.createSender(queue);
- conn.start();
- return new QueueInfo(conn, sess, sender);
- } catch (final NamingException ex) {
- LOGGER.warn("Unable to locate connection factory " + factoryBindingName, ex);
- if (!suppress) {
- throw ex;
- }
- } catch (final JMSException ex) {
- LOGGER.warn("Unable to create connection to queue " + queueBindingName, ex);
- if (!suppress) {
- throw ex;
- }
- }
- return null;
- }
-
- /** Queue connection information */
- private static class QueueInfo {
- private final QueueConnection conn;
- private final QueueSession session;
- private final QueueSender sender;
-
- public QueueInfo(final QueueConnection conn, final QueueSession session, final QueueSender sender) {
- this.conn = conn;
- this.session = session;
- this.sender = sender;
- }
- }
-
- /**
- * Factory to create the JmsQueueManager.
- */
- private static class JMSQueueManagerFactory implements ManagerFactory<JmsQueueManager, FactoryData> {
-
- @Override
- public JmsQueueManager createManager(final String name, final FactoryData data) {
- try {
- final Context ctx = createContext(data.factoryName, data.providerURL, data.urlPkgPrefixes,
- data.securityPrincipalName, data.securityCredentials);
- final QueueInfo info = connect(ctx, data.factoryBindingName, data.queueBindingName, data.userName,
- data.password, true);
- return new JmsQueueManager(name, ctx, data.factoryBindingName, data.queueBindingName,
- data.userName, data.password, info);
- } catch (final NamingException ex) {
- LOGGER.error("Unable to locate resource", ex);
- } catch (final Exception ex) {
- LOGGER.error("Unable to connect", ex);
- }
-
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueReceiver.java
deleted file mode 100644
index eb927ff..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsQueueReceiver.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-
-import javax.jms.JMSException;
-import javax.jms.Queue;
-import javax.jms.QueueConnection;
-import javax.jms.QueueConnectionFactory;
-import javax.jms.QueueReceiver;
-import javax.jms.QueueSession;
-import javax.jms.Session;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-/**
- * Receives Log Events over a JMS Queue. This implementation expects that all messages will
- * contain a serialized LogEvent.
- */
-public class JmsQueueReceiver extends AbstractJmsReceiver {
-
- /**
- * Constructor.
- * @param qcfBindingName The QueueConnectionFactory binding name.
- * @param queueBindingName The Queue binding name.
- * @param username The userid to connect to the queue.
- * @param password The password to connect to the queue.
- */
- public JmsQueueReceiver(final String qcfBindingName, final String queueBindingName, final String username,
- final String password) {
-
- try {
- final Context ctx = new InitialContext();
- QueueConnectionFactory queueConnectionFactory;
- queueConnectionFactory = (QueueConnectionFactory) lookup(ctx, qcfBindingName);
- final QueueConnection queueConnection = queueConnectionFactory.createQueueConnection(username, password);
- queueConnection.start();
- final QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
- final Queue queue = (Queue) ctx.lookup(queueBindingName);
- final QueueReceiver queueReceiver = queueSession.createReceiver(queue);
- queueReceiver.setMessageListener(this);
- } catch (final JMSException e) {
- logger.error("Could not read JMS message.", e);
- } catch (final NamingException e) {
- logger.error("Could not read JMS message.", e);
- } catch (final RuntimeException e) {
- logger.error("Could not read JMS message.", e);
- }
- }
-
- /**
- * Main startup for the receiver.
- * @param args The command line arguments.
- * @throws Exception if an error occurs.
- */
- public static void main(final String[] args) throws Exception {
- if (args.length != 4) {
- usage("Wrong number of arguments.");
- }
-
- final String qcfBindingName = args[0];
- final String queueBindingName = args[1];
- final String username = args[2];
- final String password = args[3];
-
- new JmsQueueReceiver(qcfBindingName, queueBindingName, username, password);
-
- final Charset enc = Charset.defaultCharset();
- final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, enc));
- // Loop until the word "exit" is typed
- System.out.println("Type \"exit\" to quit JmsQueueReceiver.");
- while (true) {
- final String line = stdin.readLine();
- if (line == null || line.equalsIgnoreCase("exit")) {
- System.out.println("Exiting. Kill the application if it does not exit "
- + "due to daemon threads.");
- return;
- }
- }
- }
-
-
- private static void usage(final String msg) {
- System.err.println(msg);
- System.err.println("Usage: java " + JmsQueueReceiver.class.getName()
- + " QueueConnectionFactoryBindingName QueueBindingName username password");
- System.exit(1);
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicManager.java
deleted file mode 100644
index f06ec06..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicManager.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-import javax.jms.Session;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicPublisher;
-import javax.jms.TopicSession;
-import javax.naming.Context;
-import javax.naming.NamingException;
-
-import org.apache.logging.log4j.core.appender.ManagerFactory;
-
-/**
- * Manager for JMS Topic connections.
- */
-public class JmsTopicManager extends AbstractJmsManager {
-
- private static final JMSTopicManagerFactory FACTORY = new JMSTopicManagerFactory();
-
- private TopicInfo info;
- private final String factoryBindingName;
- private final String topicBindingName;
- private final String userName;
- private final String password;
- private final Context context;
- /**
- * Constructor.
- * @param name The unique name of the connection.
- * @param context The context.
- * @param factoryBindingName The factory binding name.
- * @param topicBindingName The queue binding name.
- * @param userName The user name.
- * @param password The credentials for the user.
- * @param info The Queue connection info.
- */
- protected JmsTopicManager(final String name, final Context context, final String factoryBindingName,
- final String topicBindingName, final String userName, final String password,
- final TopicInfo info) {
- super(name);
- this.context = context;
- this.factoryBindingName = factoryBindingName;
- this.topicBindingName = topicBindingName;
- this.userName = userName;
- this.password = password;
- this.info = info;
- }
-
- /**
- * Obtain a JSMTopicManager.
- * @param factoryName The fully qualified class name of the InitialContextFactory.
- * @param providerURL The URL of the provider to use.
- * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
- * will create a URL context factory
- * @param securityPrincipalName The name of the identity of the Principal.
- * @param securityCredentials The security credentials of the Principal.
- * @param factoryBindingName The name to locate in the Context that provides the TopicConnectionFactory.
- * @param topicBindingName The name to use to locate the Topic.
- * @param userName The userid to use to create the Topic Connection.
- * @param password The password to use to create the Topic Connection.
- * @return A JmsTopicManager.
- */
- public static JmsTopicManager getJmsTopicManager(final String factoryName, final String providerURL,
- final String urlPkgPrefixes, final String securityPrincipalName,
- final String securityCredentials, final String factoryBindingName,
- final String topicBindingName, final String userName,
- final String password) {
-
- if (factoryBindingName == null) {
- LOGGER.error("No factory name provided for JmsTopicManager");
- return null;
- }
- if (topicBindingName == null) {
- LOGGER.error("No topic name provided for JmsTopicManager");
- return null;
- }
-
- final String name = "JMSTopic:" + factoryBindingName + '.' + topicBindingName;
- return getManager(name, FACTORY, new FactoryData(factoryName, providerURL, urlPkgPrefixes,
- securityPrincipalName, securityCredentials, factoryBindingName, topicBindingName, userName, password));
- }
-
-
- @Override
- public void send(final Serializable object) throws Exception {
- if (info == null) {
- info = connect(context, factoryBindingName, topicBindingName, userName, password, false);
- }
- try {
- super.send(object, info.session, info.publisher);
- } catch (final Exception ex) {
- cleanup(true);
- throw ex;
- }
- }
-
- @Override
- public void releaseSub() {
- if (info != null) {
- cleanup(false);
- }
- }
-
- private void cleanup(final boolean quiet) {
- try {
- info.session.close();
- } catch (final Exception e) {
- if (!quiet) {
- LOGGER.error("Error closing session for " + getName(), e);
- }
- }
- try {
- info.conn.close();
- } catch (final Exception e) {
- if (!quiet) {
- LOGGER.error("Error closing connection for " + getName(), e);
- }
- }
- info = null;
- }
-
- /**
- * Data for the factory.
- */
- private static class FactoryData {
- private final String factoryName;
- private final String providerURL;
- private final String urlPkgPrefixes;
- private final String securityPrincipalName;
- private final String securityCredentials;
- private final String factoryBindingName;
- private final String topicBindingName;
- private final String userName;
- private final String password;
-
- public FactoryData(final String factoryName, final String providerURL, final String urlPkgPrefixes,
- final String securityPrincipalName, final String securityCredentials,
- final String factoryBindingName, final String topicBindingName,
- final String userName, final String password) {
- this.factoryName = factoryName;
- this.providerURL = providerURL;
- this.urlPkgPrefixes = urlPkgPrefixes;
- this.securityPrincipalName = securityPrincipalName;
- this.securityCredentials = securityCredentials;
- this.factoryBindingName = factoryBindingName;
- this.topicBindingName = topicBindingName;
- this.userName = userName;
- this.password = password;
- }
- }
-
- private static TopicInfo connect(final Context context, final String factoryBindingName,
- final String queueBindingName, final String userName, final String password,
- final boolean suppress) throws Exception {
- try {
- final TopicConnectionFactory factory = (TopicConnectionFactory) lookup(context, factoryBindingName);
- TopicConnection conn;
- if (userName != null) {
- conn = factory.createTopicConnection(userName, password);
- } else {
- conn = factory.createTopicConnection();
- }
- final TopicSession sess = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
- final Topic topic = (Topic) lookup(context, queueBindingName);
- final TopicPublisher publisher = sess.createPublisher(topic);
- conn.start();
- return new TopicInfo(conn, sess, publisher);
- } catch (final NamingException ex) {
- LOGGER.warn("Unable to locate connection factory " + factoryBindingName, ex);
- if (!suppress) {
- throw ex;
- }
- } catch (final JMSException ex) {
- LOGGER.warn("Unable to create connection to queue " + queueBindingName, ex);
- if (!suppress) {
- throw ex;
- }
- }
- return null;
- }
-
- /** Topic connection information */
- private static class TopicInfo {
- private final TopicConnection conn;
- private final TopicSession session;
- private final TopicPublisher publisher;
-
- public TopicInfo(final TopicConnection conn, final TopicSession session, final TopicPublisher publisher) {
- this.conn = conn;
- this.session = session;
- this.publisher = publisher;
- }
- }
-
- /**
- * Factory to create the JmsQueueManager.
- */
- private static class JMSTopicManagerFactory implements ManagerFactory<JmsTopicManager, FactoryData> {
-
- @Override
- public JmsTopicManager createManager(final String name, final FactoryData data) {
- try {
- final Context ctx = createContext(data.factoryName, data.providerURL, data.urlPkgPrefixes,
- data.securityPrincipalName, data.securityCredentials);
- final TopicInfo info = connect(ctx, data.factoryBindingName, data.topicBindingName, data.userName,
- data.password, true);
- return new JmsTopicManager(name, ctx, data.factoryBindingName, data.topicBindingName,
- data.userName, data.password, info);
- } catch (final NamingException ex) {
- LOGGER.error("Unable to locate resource", ex);
- } catch (final Exception ex) {
- LOGGER.error("Unable to connect", ex);
- }
-
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicReceiver.java
deleted file mode 100644
index f1422e9..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/JmsTopicReceiver.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-
-import javax.jms.JMSException;
-import javax.jms.Session;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicSession;
-import javax.jms.TopicSubscriber;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-/**
- * Receives Topic messages that contain LogEvents. This implementation expects that all messages
- * are serialized log events.
- */
-public class JmsTopicReceiver extends AbstractJmsReceiver {
-
- /**
- * Constructor.
- * @param tcfBindingName The TopicConnectionFactory binding name.
- * @param topicBindingName The Topic binding name.
- * @param username The userid to connect to the topic.
- * @param password The password to connect to the topic.
- */
- public JmsTopicReceiver(final String tcfBindingName, final String topicBindingName, final String username,
- final String password) {
- try {
- final Context ctx = new InitialContext();
- TopicConnectionFactory topicConnectionFactory;
- topicConnectionFactory = (TopicConnectionFactory) lookup(ctx, tcfBindingName);
- final TopicConnection topicConnection = topicConnectionFactory.createTopicConnection(username, password);
- topicConnection.start();
- final TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
- final Topic topic = (Topic) ctx.lookup(topicBindingName);
- final TopicSubscriber topicSubscriber = topicSession.createSubscriber(topic);
- topicSubscriber.setMessageListener(this);
- } catch (final JMSException e) {
- logger.error("Could not read JMS message.", e);
- } catch (final NamingException e) {
- logger.error("Could not read JMS message.", e);
- } catch (final RuntimeException e) {
- logger.error("Could not read JMS message.", e);
- }
- }
-
- /**
- * Main startup for the receiver.
- * @param args The command line arguments.
- * @throws Exception if an error occurs.
- */
- public static void main(final String[] args) throws Exception {
- if (args.length != 4) {
- usage("Wrong number of arguments.");
- }
-
- final String tcfBindingName = args[0];
- final String topicBindingName = args[1];
- final String username = args[2];
- final String password = args[3];
-
- new JmsTopicReceiver(tcfBindingName, topicBindingName, username, password);
-
- final Charset enc = Charset.defaultCharset();
- final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, enc));
- // Loop until the word "exit" is typed
- System.out.println("Type \"exit\" to quit JmsTopicReceiver.");
- while (true) {
- final String line = stdin.readLine();
- if (line == null || line.equalsIgnoreCase("exit")) {
- System.out.println("Exiting. Kill the application if it does not exit "
- + "due to daemon threads.");
- return;
- }
- }
- }
-
- private static void usage(final String msg) {
- System.err.println(msg);
- System.err.println("Usage: java " + JmsTopicReceiver.class.getName()
- + " TopicConnectionFactoryBindingName TopicBindingName username password");
- System.exit(1);
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/package-info.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/package-info.java
deleted file mode 100644
index 98e9e03..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/jms/package-info.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.
- */
-/**
- * Supporting network code for JMS appenders.
- * <p/>
- * Note that you can use JmsQueueReceiver or JmsTopicReceiver as executable main classes to receive log events over
- * JMS (sent via the appropriate JMS appender) that can be subsequently logged according to the configuration given to
- * the running process. Of course, use of these classes as standalone executables are entirely optional and can
- * be used directly in your application (e.g., through your Spring {@code beans.xml} configuration).
- */
-package org.apache.logging.log4j.core.net.jms;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueAppenderTest.java
deleted file mode 100644
index 13f6d92..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueAppenderTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.apache.logging.log4j.status.StatusConsoleListener;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockejb.jms.MockQueue;
-import org.mockejb.jms.QueueConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class JmsQueueAppenderTest {
-
- private static final String FACTORY_NAME = "TestQueueConnectionFactory";
- private static final String QUEUE_NAME = "TestQueue";
-
- private static Context context;
- private static AbstractJmsReceiver receiver;
-
- private static final String CONFIG = "log4j-jmsqueue.xml";
-
- LoggerContext ctx = (LoggerContext) LogManager.getContext();
- Logger root = ctx.getLogger("JmsQueueTest");
-
- @BeforeClass
- public static void setupClass() throws Exception {
- // MockContextFactory becomes the primary JNDI provider
- final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
- StatusLogger.getLogger().registerListener(listener);
- MockContextFactory.setAsInitial();
- context = new InitialContext();
- context.rebind(FACTORY_NAME, new QueueConnectionFactoryImpl());
- context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
- System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
- receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
- }
-
- @AfterClass
- public static void cleanupClass() {
- StatusLogger.getLogger().reset();
- }
-
- @Test
- public void testConfiguration() throws Exception {
- final LoggerContext ctx = (LoggerContext) LogManager.getContext();
- final Configuration config = ctx.getConfiguration();
- final Map<String, Appender> appenders = config.getAppenders();
- assertTrue(appenders.containsKey("JMSQueue"));
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueFailoverTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueFailoverTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueFailoverTest.java
deleted file mode 100644
index 456c049..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueFailoverTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.apache.logging.log4j.status.StatusConsoleListener;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockejb.jms.MockQueue;
-import org.mockejb.jms.QueueConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class JmsQueueFailoverTest {
-
- private static final String FACTORY_NAME = "QueueConnectionFactory";
- private static final String QUEUE_NAME = "Log4j2Queue";
-
- private static Context context;
- private static AbstractJmsReceiver receiver;
-
- private static final String CONFIG = "log4j-jmsqueue-failover.xml";
-
- private static Configuration config;
- private static ListAppender listAppender;
- private static LoggerContext ctx;
-
- @BeforeClass
- public static void setupClass() throws Exception {
- setupQueue();
- System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
- ctx = (LoggerContext) LogManager.getContext(false);
- }
-
- @AfterClass
- public static void cleanupClass() {
- System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
- ctx.reconfigure();
- StatusLogger.getLogger().reset();
- }
-
- @Before
- public void before() {
- config = ctx.getConfiguration();
- listAppender = (ListAppender) config.getAppender("List");
- assertNotNull("No Appender", listAppender);
- listAppender.clear();
- ThreadContext.clearMap();
- }
-
- private static void setupQueue() throws Exception {
- // MockContextFactory becomes the primary JNDI provider
- final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
- StatusLogger.getLogger().registerListener(listener);
- MockContextFactory.setAsInitial();
- context = new InitialContext();
- context.rebind(FACTORY_NAME, new QueueConnectionFactoryImpl());
- //context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
- //System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
- //receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
- }
-
- @Test
- public void testFailover() throws Exception {
- ThreadContext.put("appender", "Failover");
- final Logger logger = LogManager.getLogger(JmsQueueFailoverTest.class);
- logger.debug("Test Message");
- final List<LogEvent> events = listAppender.getEvents();
- assertNotNull("No events returned", events);
- assertTrue("No events returned", events.size() > 0);
- assertTrue("Incorrect event", "Test Message".equals(events.get(0).getMessage().getFormattedMessage()));
- }
-
- @Test
- public void testReconnect() throws Exception {
- context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
- receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
- ThreadContext.put("appender", "Failover");
- final Logger logger = LogManager.getLogger(JmsQueueFailoverTest.class);
- logger.debug("Test Message");
- final List<LogEvent> events = listAppender.getEvents();
- assertNotNull("No events returned", events);
- assertTrue("No events returned", events.size() > 0);
- assertTrue("Incorrect event", "Test Message".equals(events.get(0).getMessage().getFormattedMessage()));
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueTest.java
deleted file mode 100644
index d4854c6..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsQueueTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.appender.ConsoleAppender;
-import org.apache.logging.log4j.core.appender.jms.JmsQueueAppender;
-import org.apache.logging.log4j.core.filter.AbstractFilter;
-import org.apache.logging.log4j.core.filter.CompositeFilter;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.status.StatusConsoleListener;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockejb.jms.MockQueue;
-import org.mockejb.jms.QueueConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class JmsQueueTest {
-
- private static final String FACTORY_NAME = "TestQueueConnectionFactory";
- private static final String QUEUE_NAME = "TestQueue";
-
- private static Context context;
- private static AbstractJmsReceiver receiver;
-
- LoggerContext ctx = (LoggerContext) LogManager.getContext();
- Logger root = ctx.getLogger("JmsQueueTest");
-
- @BeforeClass
- public static void setupClass() throws Exception {
- // MockContextFactory becomes the primary JNDI provider
- final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
- StatusLogger.getLogger().registerListener(listener);
- MockContextFactory.setAsInitial();
- context = new InitialContext();
- context.rebind(FACTORY_NAME, new QueueConnectionFactoryImpl());
- context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
- ((LoggerContext) LogManager.getContext()).reconfigure();
- receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
- }
-
- @AfterClass
- public static void cleanupClass() {
- StatusLogger.getLogger().reset();
- }
-
- @After
- public void teardown() {
- final Map<String,Appender> map = root.getAppenders();
- for (final Map.Entry<String, Appender> entry : map.entrySet()) {
- final Appender app = entry.getValue();
- root.removeAppender(app);
- app.stop();
- }
- }
-
- @Test
- public void testServer() throws Exception {
- final Filter clientFilter = new MessageFilter(Filter.Result.NEUTRAL, Filter.Result.DENY);
- final Filter serverFilter = new MessageFilter(Filter.Result.DENY, Filter.Result.NEUTRAL);
- final CompositeFilter clientFilters = CompositeFilter.createFilters(new Filter[]{clientFilter});
- final JmsQueueAppender appender = JmsQueueAppender.createAppender("Test", null, null, null, null, null, FACTORY_NAME,
- QUEUE_NAME, null, null, null, clientFilters, "true");
- appender.start();
- final CompositeFilter serverFilters = CompositeFilter.createFilters(new Filter[]{serverFilter});
- final ListAppender listApp = new ListAppender("Events", serverFilters, null, false, false);
- listApp.start();
- final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
- final ConsoleAppender console = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
- console.start();
- final Logger serverLogger = ctx.getLogger(JmsTopicReceiver.class.getName());
- serverLogger.addAppender(console);
- serverLogger.setAdditive(false);
-
-
- // set appender on root and set level to debug
- root.addAppender(listApp);
- root.addAppender(appender);
- root.setAdditive(false);
- root.setLevel(Level.DEBUG);
- root.debug("This is a test message");
- Thread.sleep(100);
- final List<LogEvent> events = listApp.getEvents();
- assertNotNull("No event retrieved", events);
- assertTrue("No events retrieved", events.size() > 0);
- assertTrue("Incorrect event", events.get(0).getMessage().getFormattedMessage().equals("This is a test message"));
- }
-
- private class MessageFilter extends AbstractFilter {
- public MessageFilter(final Result onMatch, final Result onMismatch) {
- super(onMatch, onMismatch);
- }
-
- @Override
- public Result filter(final LogEvent event) {
- final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
- for (final StackTraceElement element : stackTrace) {
- if (element.getMethodName().equals("onMessage")) {
- return onMatch;
- } else if (element.getMethodName().equals("testServer")) {
- return onMismatch;
- }
- }
- return onMismatch;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicFailoverTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicFailoverTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicFailoverTest.java
deleted file mode 100644
index f0dc11a..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicFailoverTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.apache.logging.log4j.status.StatusConsoleListener;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockejb.jms.MockTopic;
-import org.mockejb.jms.TopicConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class JmsTopicFailoverTest {
-
- private static final String FACTORY_NAME = "TopicConnectionFactory";
- private static final String TOPIC_NAME = "Log4j2Topic";
-
- private static Context context;
-
- private static final String CONFIG = "log4j-jmstopic-failover.xml";
-
- private static Configuration config;
- private static ListAppender listAppender;
- private static LoggerContext ctx;
-
- @BeforeClass
- public static void setupClass() throws Exception {
- setupQueue();
- System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
- ctx = (LoggerContext) LogManager.getContext(false);
- }
-
- @AfterClass
- public static void cleanupClass() {
- System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
- ctx.reconfigure();
- StatusLogger.getLogger().reset();
- }
-
- @Before
- public void before() {
- config = ctx.getConfiguration();
- listAppender = (ListAppender) config.getAppender("List");
- assertNotNull("No Appender", listAppender);
- listAppender.clear();
- ThreadContext.clearMap();
- }
-
- private static void setupQueue() throws Exception {
- // MockContextFactory becomes the primary JNDI provider
- final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
- StatusLogger.getLogger().registerListener(listener);
- MockContextFactory.setAsInitial();
- context = new InitialContext();
- context.rebind(FACTORY_NAME, new TopicConnectionFactoryImpl());
- //context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
- //System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
- //receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
- }
-
- @Test
- public void testFailover() throws Exception {
- ThreadContext.put("appender", "Failover");
- final Logger logger = LogManager.getLogger(JmsTopicFailoverTest.class);
- logger.debug("Test Message");
- final List<LogEvent> events = listAppender.getEvents();
- assertNotNull("No events returned", events);
- assertTrue("No events returned", events.size() > 0);
- assertTrue("Incorrect event", "Test Message".equals(events.get(0).getMessage().getFormattedMessage()));
- }
-
- @Test
- public void testReconnect() throws Exception {
- context.rebind(TOPIC_NAME, new MockTopic(TOPIC_NAME));
- final AbstractJmsReceiver receiver = new JmsTopicReceiver(FACTORY_NAME, TOPIC_NAME, null, null);
- ThreadContext.put("appender", "Failover");
- final Logger logger = LogManager.getLogger(JmsTopicFailoverTest.class);
- logger.debug("Test Message");
- final List<LogEvent> events = listAppender.getEvents();
- assertNotNull("No events returned", events);
- assertTrue("No events returned", events.size() > 0);
- assertTrue("Incorrect event", "Test Message".equals(events.get(0).getMessage().getFormattedMessage()));
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1274408e/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicTest.java
deleted file mode 100644
index df4bf02..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/jms/JmsTopicTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.logging.log4j.core.net.jms;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.appender.ConsoleAppender;
-import org.apache.logging.log4j.core.appender.jms.JmsTopicAppender;
-import org.apache.logging.log4j.core.filter.AbstractFilter;
-import org.apache.logging.log4j.core.filter.CompositeFilter;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.status.StatusConsoleListener;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockejb.jms.MockTopic;
-import org.mockejb.jms.TopicConnectionFactoryImpl;
-import org.mockejb.jndi.MockContextFactory;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class JmsTopicTest {
-
- private static final String FACTORY_NAME = "TestTopicConnectionFactory";
- private static final String TOPIC_NAME = "TestTopic";
-
- private static Context context;
- private static AbstractJmsReceiver receiver;
-
- LoggerContext ctx = (LoggerContext) LogManager.getContext();
- Logger root = ctx.getLogger("JmsTopicTest");
-
- @BeforeClass
- public static void setupClass() throws Exception {
- // MockContextFactory becomes the primary JNDI provider
- final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
- StatusLogger.getLogger().registerListener(listener);
- MockContextFactory.setAsInitial();
- context = new InitialContext();
- context.rebind(FACTORY_NAME, new TopicConnectionFactoryImpl());
- context.rebind(TOPIC_NAME, new MockTopic(TOPIC_NAME));
- ((LoggerContext) LogManager.getContext()).reconfigure();
- receiver = new JmsTopicReceiver(FACTORY_NAME, TOPIC_NAME, null, null);
- }
-
- @AfterClass
- public static void cleanupClass() {
- StatusLogger.getLogger().reset();
- }
-
- @After
- public void teardown() {
- final Map<String,Appender> map = root.getAppenders();
- for (final Map.Entry<String, Appender> entry : map.entrySet()) {
- final Appender app = entry.getValue();
- root.removeAppender(app);
- app.stop();
- }
- }
-
- @Test
- public void testServer() throws Exception {
- final Filter clientFilter = new MessageFilter(Filter.Result.NEUTRAL, Filter.Result.DENY);
- final Filter serverFilter = new MessageFilter(Filter.Result.DENY, Filter.Result.NEUTRAL);
- final CompositeFilter clientFilters = CompositeFilter.createFilters(new Filter[]{clientFilter});
- final JmsTopicAppender appender = JmsTopicAppender.createAppender("Test", null, null, null, null, null, FACTORY_NAME,
- TOPIC_NAME, null, null, null, clientFilters, "true");
- appender.start();
- final CompositeFilter serverFilters = CompositeFilter.createFilters(new Filter[]{serverFilter});
- final ListAppender listApp = new ListAppender("Events", serverFilters, null, false, false);
- listApp.start();
- final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
- final ConsoleAppender console =
- ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
- console.start();
- final Logger serverLogger = ctx.getLogger(JmsTopicReceiver.class.getName());
- serverLogger.addAppender(console);
- serverLogger.setAdditive(false);
-
-
- // set appender on root and set level to debug
- root.addAppender(listApp);
- root.addAppender(appender);
- root.setAdditive(false);
- root.setLevel(Level.DEBUG);
- root.debug("This is a test message");
- Thread.sleep(100);
- final List<LogEvent> events = listApp.getEvents();
- assertNotNull("No event retrieved", events);
- assertTrue("No events retrieved", events.size() > 0);
- assertTrue("Incorrect event", events.get(0).getMessage().getFormattedMessage().equals("This is a test message"));
- }
-
- private class MessageFilter extends AbstractFilter {
- public MessageFilter(final Result onMatch, final Result onMismatch) {
- super(onMatch, onMismatch);
- }
-
- @Override
- public Result filter(final LogEvent event) {
- final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
- for (final StackTraceElement element : stackTrace) {
- if (element.getMethodName().equals("onMessage")) {
- return onMatch;
- } else if (element.getMethodName().equals("testServer")) {
- return onMismatch;
- }
- }
- return onMismatch;
- }
- }
-}