| /** |
| * 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.activemq.util; |
| |
| import java.util.Hashtable; |
| import javax.jms.Connection; |
| import javax.jms.ConnectionFactory; |
| import javax.jms.JMSException; |
| import javax.naming.Context; |
| import javax.naming.InitialContext; |
| import javax.naming.NamingException; |
| |
| /** |
| * A JMS 1.1 log4j appender which uses JNDI to locate a JMS ConnectionFactory to |
| * use for logging events. |
| * |
| * |
| */ |
| public class JndiJmsLogAppender extends JmsLogAppenderSupport { |
| |
| private String jndiName; |
| private String userName; |
| private String password; |
| |
| private String initialContextFactoryName; |
| private String providerURL; |
| private String urlPkgPrefixes; |
| private String securityPrincipalName; |
| private String securityCredentials; |
| |
| public JndiJmsLogAppender() { |
| } |
| |
| public String getJndiName() { |
| return jndiName; |
| } |
| |
| public void setJndiName(String jndiName) { |
| this.jndiName = jndiName; |
| } |
| |
| public String getUserName() { |
| return userName; |
| } |
| |
| public void setUserName(String userName) { |
| this.userName = userName; |
| } |
| |
| public String getPassword() { |
| return password; |
| } |
| |
| public void setPassword(String password) { |
| this.password = password; |
| } |
| |
| // to customize the JNDI context |
| // ------------------------------------------------------------------------- |
| public String getInitialContextFactoryName() { |
| return initialContextFactoryName; |
| } |
| |
| public void setInitialContextFactoryName(String initialContextFactoryName) { |
| this.initialContextFactoryName = initialContextFactoryName; |
| } |
| |
| public String getProviderURL() { |
| return providerURL; |
| } |
| |
| public void setProviderURL(String providerURL) { |
| this.providerURL = providerURL; |
| } |
| |
| public String getUrlPkgPrefixes() { |
| return urlPkgPrefixes; |
| } |
| |
| public void setUrlPkgPrefixes(String urlPkgPrefixes) { |
| this.urlPkgPrefixes = urlPkgPrefixes; |
| } |
| |
| public String getSecurityPrincipalName() { |
| return securityPrincipalName; |
| } |
| |
| public void setSecurityPrincipalName(String securityPrincipalName) { |
| this.securityPrincipalName = securityPrincipalName; |
| } |
| |
| public String getSecurityCredentials() { |
| return securityCredentials; |
| } |
| |
| public void setSecurityCredentials(String securityCredentials) { |
| this.securityCredentials = securityCredentials; |
| } |
| |
| // Implementation methods |
| // ------------------------------------------------------------------------- |
| protected Connection createConnection() throws JMSException, NamingException { |
| InitialContext context = createInitialContext(); |
| // LogLog.debug("Looking up ConnectionFactory with jndiName: " + jndiName); |
| ConnectionFactory factory = (ConnectionFactory)context.lookup(jndiName); |
| if (factory == null) { |
| throw new JMSException("No such ConnectionFactory for name: " + jndiName); |
| } |
| if (userName != null) { |
| return factory.createConnection(userName, password); |
| } else { |
| return factory.createConnection(); |
| } |
| } |
| |
| protected InitialContext createInitialContext() throws NamingException { |
| if (initialContextFactoryName == null) { |
| return new InitialContext(); |
| } else { |
| Hashtable<String, String> env = new Hashtable<String, String>(); |
| env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName); |
| if (providerURL != null) { |
| env.put(Context.PROVIDER_URL, providerURL); |
| } else { |
| // LogLog.warn("You have set InitialContextFactoryName option but not the " + "ProviderURL. This is likely to cause problems."); |
| } |
| if (urlPkgPrefixes != null) { |
| env.put(Context.URL_PKG_PREFIXES, urlPkgPrefixes); |
| } |
| |
| if (securityPrincipalName != null) { |
| env.put(Context.SECURITY_PRINCIPAL, securityPrincipalName); |
| if (securityCredentials != null) { |
| env.put(Context.SECURITY_CREDENTIALS, securityCredentials); |
| } else { |
| // LogLog.warn("You have set SecurityPrincipalName option but not the " + "SecurityCredentials. This is likely to cause problems."); |
| } |
| } |
| // LogLog.debug("Looking up JNDI context with environment: " + env); |
| return new InitialContext(env); |
| } |
| } |
| } |