如何更改JCS cache.ccf文件的路径?

时间:2012-05-24 08:21:08

标签: java caching jcs

我正在尝试将cache.ccf文件的路径改为大约一小时......
当我打电话给JCS.getInstance("myRegion");时,我收到了这个错误:

Exception in thread "main" java.lang.IllegalStateException: Failed to load properties for name [/cache.ccf]

我试图将cache.ccf放入src文件夹。在这种情况下一切都OK。但我希望它位于./config/目录中,而不是./src中。我试图更改配置文件名:

JCS.setConfigFilename("../config/cache.ccf");

但是它没有用,而且我得到了同样的错误:

Exception in thread "main" java.lang.IllegalStateException: Failed to load properties for name [../config/cache.ccf]

它接缝说JCS试图在src目录中找到名为"../config/cache.ccf"的文件 Here我发现了这句话:
类路径应包括此文件所在的目录,或者文件应放在类路径的根目录下,因为它是自动发现的。

但即使cache.ccf文件位于项目的根目录中,我的applilcation也不起作用 如何更改cache.ccf文件的路径?

4 个答案:

答案 0 :(得分:9)

我遇到了这个问题 - 因为我的项目(axis2,tomcat)中有多个类加载器,所以很难找出放置cache.ccf文件的位置。我最终没有使用.properties文件并直接配置它 - 这就是我如何做到的......

CompositeCacheManager ccm = CompositeCacheManager.getUnconfiguredInstance();
Properties props = new Properties();

props.put("jcs.default","DC");
props.put("jcs.default.cacheattributes",
          "org.apache.jcs.engine.CompositeCacheAttributes");
// lots more props.put - this is basically the contents of cache.ccf

ccm.configure(props);
JCS sessionCache = JCS.getInstance("bbSessionCache");

答案 1 :(得分:2)

扩展Jon的答案。自定义代码从文件加载配置。在实例化JCS之前把它放。

    final String configFilename = System.getProperty("jcs.configurationFile");

    if (configFilename != null)
    {
        try (FileReader f = new FileReader(configFilename))
        {
            Properties props = new Properties();
            props.load(f);
            CompositeCacheManager ccm = CompositeCacheManager.getUnconfiguredInstance();
            ccm.configure(props);       
        }
    }

答案 2 :(得分:1)

您可能想要检查您的类路径。好像只有src在classpath而不是config文件夹中。 对我来说,我将* .ccf文件放在我的类路径中的config目录中,我只需要指定ccf文件的路径为/client_cache.ccf,以便JCS将其取出。

它还取决于您的部署环境。但是,如果您在类路径中列出/ config,它应该可以工作。

答案 3 :(得分:0)

我找到了这个相关信息

https://commons.apache.org/proper/commons-jcs/faq.html#configuration-file

CompositeCacheManager ccm = CompositeCacheManager.getUnconfiguredInstance(); 
Properties props = new Properties(); 
props.load(/* load properties from some location defined by your app */); 
ccm.configure(props);