如何在Apache Tomcat启动中创建单例(来自外部jar的类)

时间:2014-04-14 04:20:57

标签: java tomcat jena

我已经仔细阅读了问题How can I create a singleton in Apache Tomcat startup。但我的问题是单例不是我自己定义的类的实例。它是一个外部jar的实例。我该如何创建一个单例从外部罐子? 我的情况是我想使用Jena创建一个OWLModel,它需要是一个单独的并且将被所有servlet使用。但是OWLModel类来自外部jar,而不是我自己创建的类。 我对Tomcat很新鲜,我希望得到帮助。谢谢你!

1 个答案:

答案 0 :(得分:1)

这是在servlet之间共享对象的更直接的JEE问题的一部分。

当我这样做时(包括Jena模型),我倾向于采用纯JEE方法来解决这个问题。我的方法往往是:

黑客行为快速而且肮脏,并且不需要你学习EE框架以便继续前进。

在代码中的某处,定义一个用于返回该实例的工厂:

public class MyFactory {
    private static final Model THE_INSTANCE = ModelFactory.createDefaultModel();
    static {
        // Use this static initializer for any other model setup stuff.
    }
    public static Model getModel() { return THE_INSTANCE; }
}

然后在servlet中,只需调用MyFactory.getModel()即可检索实例。您需要自己处理Jena concurrency,无论采用哪种方法,请注意。

编辑:一个重要的假设是外部jar在你的类路径上可用。在打包和部署WAR时进行管理。如果你的类路径上还没有jar,那么还有其他工作需要完成。