美文网首页我用 Linux
Tomcat错误信息管理-StringManager

Tomcat错误信息管理-StringManager

作者: 刘振锋 | 来源:发表于2017-04-11 11:48 被阅读0次

背景说明

Tomcat作为一款应用非常广泛的服务器,错误信息提示肯定要做国际化支持。Tomcat将错误信息保存到properties文件中,并且由于Tomcat的类比较多,如果将所有类的错误提示信息都维护到同一个properties文件中,那将是一场噩梦。Tomcat在每一个包中,都有一组properties文件,来保存当前包中类的错误提示信息。图1是包org.apache.catalina.connector中错误提示信息配置文件列表

图1

LocalStrings.proerties中部门内容如图2

图2LocalStrings.proerties中部分内容

源码分析

Tomcat使用类StringManager来管理错误提示信息,我们可以通过下面代码来获取其对象。

/**
 * The string manager for this package.
 */
protected static final StringManager sm =
    StringManager.getManager(Constants.Package);

其中Constants.Package常量定义了当前类所属包的包名。

方法getManager的实现

private static final Hashtable<String, StringManager> managers =
        new Hashtable<String, StringManager>();

/**
 * Get the StringManager for a particular package. If a manager for
 * a package already exists, it will be reused, else a new
 * StringManager will be created and returned.
 *
 * @param packageName The package name
 *
 * @return The instance associated with the given package
 */
public static final synchronized StringManager getManager(String packageName) {
    StringManager mgr = managers.get(packageName);
    if (mgr == null) {
        mgr = new StringManager(packageName);
        managers.put(packageName, mgr);
    }
    return mgr;
}

由以上代码可以看出,StringManager为每个package创建一个对象,并通过内部的HashTable类型的私有变量managers来管理,显然,这采用了对象的<b>多例模式</b>。

多例模式

说到对象的多例模式,我们会很容易想到它的两个特点:

  1. 类可以拥有多个实例
  2. 类本身创建、管理自己的实例(与单例模式一样,不对外提供构造方法)。

相关阅读:

Linux查看实时网卡流量的几种方式

如何优雅的实现文件上传或下载

当CPU飙高时,它在做什么


本文首发在 刘振锋的简书博客 原文地址为《Tomcat错误信息管理-StringManager》转载请注明!

相关文章

网友评论

    本文标题:Tomcat错误信息管理-StringManager

    本文链接:https://www.haomeiwen.com/subject/wzdyattx.html