我正在尝试将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文件的路径?
答案 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);