`
endual
  • 浏览: 3509749 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

log4j的用法

 
阅读更多



import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.log4j.Logger;

public class ClientConfig
{
  private static final String UDDI_CONFIG_FILENAME_PROPERTY = "uddi.client.xml";
  public static final String DEFAULT_UDDI_CONFIG = "META-INF/uddi.xml";
  private Logger log = Logger.getLogger(ClientConfig.class);
  private Configuration config = null;
  private Map<String, UDDINode> uddiNodes = null;
  private Map<String, UDDIClerk> uddiClerks = null;
  private Set<XRegistration> xBusinessRegistrations = null;
  private Set<XRegistration> xServiceBindingRegistrations = null;
  private String managerName = null;

  public ClientConfig(String configurationFile)
    throws ConfigurationException
  {
    loadConfiguration(configurationFile);
  }
  protected void loadManager() throws ConfigurationException {
    this.uddiNodes = readNodeConfig(this.config);
    this.uddiClerks = readClerkConfig(this.config, this.uddiNodes);
    this.xServiceBindingRegistrations = readXServiceBindingRegConfig(this.config, this.uddiClerks);
    this.xBusinessRegistrations = readXBusinessRegConfig(this.config, this.uddiClerks);
  }

  private void loadConfiguration(String configurationFile)
    throws ConfigurationException
  {
    CompositeConfiguration compositeConfig = new CompositeConfiguration();
    compositeConfig.addConfiguration(new SystemConfiguration());

    XMLConfiguration xmlConfig = null;
    if (configurationFile != null) {
      xmlConfig = new XMLConfiguration(configurationFile);
    } else {
      String filename = System.getProperty("uddi.client.xml");
      if (filename != null)
        xmlConfig = new XMLConfiguration(filename);
      else {
        xmlConfig = new XMLConfiguration("META-INF/uddi.xml");
      }
    }
    this.log.info("Reading UDDI Client properties file " + xmlConfig.getBasePath());
    long refreshDelay = xmlConfig.getLong("reloadDelay", 1000L);
    this.log.debug("Setting refreshDelay to " + refreshDelay);
    FileChangedReloadingStrategy fileChangedReloadingStrategy = new FileChangedReloadingStrategy();
    fileChangedReloadingStrategy.setRefreshDelay(refreshDelay);
    xmlConfig.setReloadingStrategy(fileChangedReloadingStrategy);
    compositeConfig.addConfiguration(xmlConfig);

    this.config = compositeConfig;
    loadManager();
  }

  private Map<String, UDDIClerk> readClerkConfig(Configuration config, Map<String, UDDINode> uddiNodes) throws ConfigurationException
  {
    this.managerName = config.getString("manager[@name]");
    Map clerks = new HashMap();
    if (config.containsKey("manager.clerks.clerk[@name]")) {
      String[] names = config.getStringArray("manager.clerks.clerk[@name]");

      this.log.debug("clerk names=" + names);
      for (int i = 0; i < names.length; i++) {
        UDDIClerk uddiClerk = new UDDIClerk();
        uddiClerk.setManagerName(this.managerName);
        uddiClerk.setName(config.getString("manager.clerks.clerk(" + i + ")[@name]"));
        String nodeRef = config.getString("manager.clerks.clerk(" + i + ")[@node]");
        if (!uddiNodes.containsKey(nodeRef)) throw new ConfigurationException("Could not find Node with name=" + nodeRef);
        UDDINode uddiNode = (UDDINode)uddiNodes.get(nodeRef);
        uddiClerk.setUDDINode(uddiNode);
        uddiClerk.setPublisher(config.getString("manager.clerks.clerk(" + i + ")[@publisher]"));
        uddiClerk.setPassword(config.getString("manager.clerks.clerk(" + i + ")[@password]"));
        String[] classes = config.getStringArray("manager.clerks.clerk(" + i + ").class");
        uddiClerk.setClassWithAnnotations(classes);
        clerks.put(names[i], uddiClerk);
      }
    }
    return clerks;
  }

  public boolean isRegisterOnStartup() {
    boolean isRegisterOnStartup = false;
    if (this.config.containsKey("manager.clerks[@registerOnStartup]")) {
      isRegisterOnStartup = this.config.getBoolean("manager.clerks[@registerOnStartup]");
    }
    return isRegisterOnStartup;
  }

  private Map<String, UDDINode> readNodeConfig(Configuration config) throws ConfigurationException
  {
    String[] names = config.getStringArray("manager.nodes.node.name");
    Map nodes = new HashMap();
    this.log.debug("node names=" + names);
    for (int i = 0; i < names.length; i++) {
      UDDINode uddiNode = new UDDINode();
      String nodeName = config.getString("manager.nodes.node(" + i + ").name");
      String[] propertyKeys = config.getStringArray("manager.nodes.node(" + i + ").properties.property[@name]");
      Properties properties = null;
      if ((propertyKeys != null) && (propertyKeys.length > 0)) {
        properties = new Properties();
        for (int p = 0; p < propertyKeys.length; p++) {
          String name = config.getString("manager.nodes.node(" + i + ").properties.property(" + p + ")[@name]");
          String value = config.getString("manager.nodes.node(" + i + ").properties.property(" + p + ")[@value]");
          this.log.debug("Property: name=" + name + " value=" + value);
          properties.put(name, value);
        }
        uddiNode.setProperties(properties);
      }
      uddiNode.setHomeJUDDI(config.getBoolean("manager.nodes.node(" + i + ")[@isHomeJUDDI]", false));
      uddiNode.setName(config.getString("manager.nodes.node(" + i + ").name"));
      uddiNode.setManagerName(config.getString("manager[@name]"));
      uddiNode.setDescription(config.getString("manager.nodes.node(" + i + ").description"));
      uddiNode.setProxyTransport(config.getString("manager.nodes.node(" + i + ").proxyTransport"));
      uddiNode.setInquiryUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").inquiryUrl"), properties));
      uddiNode.setPublishUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").publishUrl"), properties));
      uddiNode.setCustodyTransferUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").custodyTransferUrl"), properties));
      uddiNode.setSecurityUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").securityUrl"), properties));
      uddiNode.setSubscriptionUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").subscriptionUrl"), properties));
      uddiNode.setSubscriptionListenerUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").subscriptionListenerUrl"), properties));
      uddiNode.setJuddiApiUrl(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").juddiApiUrl"), properties));
      uddiNode.setFactoryInitial(config.getString("manager.nodes.node(" + i + ").javaNamingFactoryInitial"));
      uddiNode.setFactoryURLPkgs(config.getString("manager.nodes.node(" + i + ").javaNamingFactoryUrlPkgs"));
      uddiNode.setFactoryNamingProvider(TokenResolver.replaceTokens(config.getString("manager.nodes.node(" + i + ").javaNamingProviderUrl"), properties));
      nodes.put(nodeName, uddiNode);
    }
    return nodes;
  }

  private Set<XRegistration> readXBusinessRegConfig(Configuration config, Map<String, UDDIClerk> clerks) throws ConfigurationException
  {
    return readXRegConfig(config, clerks, "business");
  }

  private Set<XRegistration> readXServiceBindingRegConfig(Configuration config, Map<String, UDDIClerk> clerks) throws ConfigurationException
  {
    return readXRegConfig(config, clerks, "servicebinding");
  }

  private Set<XRegistration> readXRegConfig(Configuration config, Map<String, UDDIClerk> clerks, String entityType) throws ConfigurationException
  {
    String[] entityKeys = config.getStringArray("manager.clerks.xregister." + entityType + "[@entityKey]");
    Set xRegistrations = new HashSet();
    this.log.info("XRegistration " + entityKeys.length + " " + entityType + "Keys");
    for (int i = 0; i < entityKeys.length; i++) {
      XRegistration xRegistration = new XRegistration();
      xRegistration.setEntityKey(config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@entityKey]"));

      String fromClerkRef = config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@fromClerk]");
      if (!clerks.containsKey(fromClerkRef)) throw new ConfigurationException("Could not find fromClerk with name=" + fromClerkRef);
      UDDIClerk fromClerk = (UDDIClerk)clerks.get(fromClerkRef);
      xRegistration.setFromClerk(fromClerk);

      String toClerkRef = config.getString("manager.clerks.xregister." + entityType + "(" + i + ")[@toClerk]");
      if (!clerks.containsKey(toClerkRef)) throw new ConfigurationException("Could not find toClerk with name=" + toClerkRef);
      UDDIClerk toClerk = (UDDIClerk)clerks.get(toClerkRef);
      xRegistration.setToClerk(toClerk);
      this.log.info(xRegistration);

      xRegistrations.add(xRegistration);
    }
    return xRegistrations;
  }

  protected Map<String, UDDINode> getUDDINodes() {
    return this.uddiNodes;
  }

  public UDDINode getHomeNode() throws ConfigurationException {
    if (this.uddiNodes == null) throw new ConfigurationException("The juddi client configuration must contain at least one node element.");

    if (this.uddiNodes.values().size() == 1) return (UDDINode)this.uddiNodes.values().iterator().next();
    for (UDDINode uddiNode : this.uddiNodes.values()) {
      if (uddiNode.isHomeJUDDI()) {
        return uddiNode;
      }
    }
    throw new ConfigurationException("One of the node elements in the client configuration needs to a 'isHomeJUDDI=\"true\"' attribute.");
  }

  public UDDINode getUDDINode(String nodeName) throws ConfigurationException {
    if (!this.uddiNodes.containsKey(nodeName)) {
      throw new ConfigurationException("Node '" + nodeName + "' cannot be found in the config '" + getManagerName() + "'");
    }

    return (UDDINode)this.uddiNodes.get(nodeName);
  }

  public Map<String, UDDIClerk> getUDDIClerks() {
    return this.uddiClerks;
  }

  public Set<XRegistration> getXServiceBindingRegistrations() {
    return this.xServiceBindingRegistrations;
  }

  public Set<XRegistration> getXBusinessRegistrations() {
    return this.xBusinessRegistrations;
  }

  public Configuration getConfiguration() {
    return this.config;
  }

  public String getManagerName() {
    return this.managerName;
  }
}

分享到:
评论

相关推荐

    log4j使用方法

    log4j使用方法 1、Log4j是什么? 2、Log4j的概念 3、Log4j的配置文件 4、Log4j在程序中的使用

    log4j使用方法说明

    log4j使用方法log4j使用方法log4j使用方法log4j使用方法log4j使用方法

    log4j使用方法及简单配置

    log4j使用方法及一些配置,教你如何学会配置log4j,学会使用出错日志

    Log4J用法,log4j操作手册

    Log4J用法.pdf,log4j操作手册

    log4j中配置日志文件相对路径方法分析

    log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...

    log4j-api-2.12.1-API文档-中文版.zip

    赠送jar包:log4j-api-2.12.1.jar; 赠送原API文档:log4j-api-2.12.1-javadoc.jar; 赠送源代码:log4j-api-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.12.1.pom; 包含翻译后的API文档:log4j-api-...

    log4j-slf4j-impl-2.12.1-API文档-中英对照版.zip

    赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...

    log4j-to-slf4j-2.12.1-API文档-中文版.zip

    赠送jar包:log4j-to-slf4j-2.12.1.jar; 赠送原API文档:log4j-to-slf4j-2.12.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.12.1.pom; 包含翻译后...

    log4j使用总结

    该文档包括log4j的介绍、log4j的配置文件以及配置参数详解、log4j在程序中的使用、以及log4j配置示例四大部分。

    log4j-slf4j-impl-2.12.1-API文档-中文版.zip

    赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...

    log4j-slf4j-impl-2.17.1-API文档-中英对照版.zip

    赠送jar包:log4j-slf4j-impl-2.17.1.jar; 赠送原API文档:log4j-slf4j-impl-2.17.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.17.1.pom; ...

    log4j-to-slf4j-2.10.0-API文档-中文版.zip

    赠送jar包:log4j-to-slf4j-2.10.0.jar; 赠送原API文档:log4j-to-slf4j-2.10.0-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.10.0-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.10.0.pom; 包含翻译后...

    log4j-to-slf4j-2.17.1-API文档-中英对照版.zip

    赠送jar包:log4j-to-slf4j-2.17.1.jar; 赠送原API文档:log4j-to-slf4j-2.17.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.17.1.pom; 包含翻译后...

    log4j配置和加载方法

    log4j配置和加载方法log4j配置和加载方法

    log4j-api-2.17.1-API文档-中文版.zip

    赠送jar包:log4j-api-2.17.1.jar; 赠送原API文档:log4j-api-2.17.1-javadoc.jar; 赠送源代码:log4j-api-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.17.1.pom; 包含翻译后的API文档:log4j-api-...

    log4j-core-2.7-API文档-中文版.zip

    赠送jar包:log4j-core-2.7.jar; 赠送原API文档:log4j-core-2.7-javadoc.jar; 赠送源代码:log4j-core-2.7-sources.jar; 赠送Maven依赖信息文件:log4j-core-2.7.pom; 包含翻译后的API文档:log4j-core-2.7-...

    log4j-over-slf4j-1.7.33-API文档-中英对照版.zip

    赠送jar包:log4j-over-slf4j-1.7.33.jar; 赠送原API文档:log4j-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:log4j-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:log4j-over-slf4j-1.7.33.pom; ...

    log4j-over-slf4j-1.7.33-API文档-中文版.zip

    赠送jar包:log4j-over-slf4j-1.7.33.jar; 赠送原API文档:log4j-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:log4j-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:log4j-over-slf4j-1.7.33.pom; ...

    log4j入门到详解

    目录 .....................4. Log4j 使用方法........ 4.1 properties 配置文件详解 4.2 XML 配置文件详解 .... 4.3 properties 比较详细的例子 4.4 在代码中使用 Log4j .. 4.5 注意事项 . 5. Properties 文件实例说明

    Log4j简介 介绍log4j的原理和用法

    log4j的使用习惯,让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息 ,使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。注意:在一...

Global site tag (gtag.js) - Google Analytics