美文网首页我用 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