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:56 UTC
[23/29] git commit: Delete old JMS appender classes.
Delete old JMS appender classes.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4827cdbb
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4827cdbb
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4827cdbb
Branch: refs/heads/master
Commit: 4827cdbb38391d5a840dc3edf3050e882afdc4f4
Parents: 1b66d8d
Author: Matt Sicker <ma...@apache.org>
Authored: Fri Sep 5 23:44:44 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Fri Sep 5 23:44:44 2014 -0500
----------------------------------------------------------------------
.../mom/jms/appender/JmsQueueAppender.java | 113 ---------
.../mom/jms/appender/JmsTopicAppender.java | 114 ---------
.../mom/jms/manager/AbstractJmsManager.java | 156 ------------
.../log4j/mom/jms/manager/JmsQueueManager.java | 237 -------------------
.../log4j/mom/jms/manager/JmsTopicManager.java | 237 -------------------
5 files changed, 857 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4827cdbb/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java b/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
deleted file mode 100644
index 4a544e4..0000000
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
+++ /dev/null
@@ -1,113 +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.mom.jms.appender;
-
-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.mom.jms.manager.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 static final long serialVersionUID = 1L;
-
- 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/4827cdbb/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java b/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
deleted file mode 100644
index 1b000ce..0000000
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
+++ /dev/null
@@ -1,114 +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.mom.jms.appender;
-
-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.mom.jms.manager.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 static final long serialVersionUID = 1L;
-
- 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("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 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/4827cdbb/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/AbstractJmsManager.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/AbstractJmsManager.java b/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/AbstractJmsManager.java
deleted file mode 100644
index e53b175..0000000
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/AbstractJmsManager.java
+++ /dev/null
@@ -1,156 +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.mom.jms.manager;
-
-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.
- * @see javax.naming.Context
- */
- 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.setProperty(Context.INITIAL_CONTEXT_FACTORY, factoryName);
- if (providerURL != null) {
- props.setProperty(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.setProperty(Context.URL_PKG_PREFIXES, urlPkgPrefixes);
- }
- if (securityPrincipalName != null) {
- props.setProperty(Context.SECURITY_PRINCIPAL, securityPrincipalName);
- if (securityCredentials != null) {
- props.setProperty(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/4827cdbb/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsQueueManager.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsQueueManager.java b/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsQueueManager.java
deleted file mode 100644
index fd00c03..0000000
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/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.mom.jms.manager;
-
-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/4827cdbb/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsTopicManager.java
----------------------------------------------------------------------
diff --git a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsTopicManager.java b/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/JmsTopicManager.java
deleted file mode 100644
index 9f45b72..0000000
--- a/log4j-jms/src/main/java/org/apache/logging/log4j/mom/jms/manager/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.mom.jms.manager;
-
-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;
- }
- }
-}