8

cache.ccf ファイルのパスを約 1 時間変更しようとしています...
呼び出しJCS.getInstance("myRegion");ているときに、次のエラーが表示 されます。

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

cache.ccf を src フォルダーに入れてみました。この場合、すべて問題ありません。しかし、私はそれを./config/ディレクトリではなく、./src. 設定ファイル名を変更しようとしました:

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

しかし、それは機能しておらず、同じエラーが発生しています:

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

JCS"../config/cache.ccf"が src ディレクトリで指定されたファイルを見つけようとしているようです。
ここで、次の文を見つけました
。クラスパスには、このファイルが配置されているディレクトリを含めるか、自動的に検出されるため、ファイルをクラスパスのルートに配置する必要があります。

しかし、cache.ccf ファイルがプロジェクトのルート ディレクトリにある場合でも、私のアプリケーションは動作しません。
cache.ccf ファイルのパスを変更するにはどうすればよいですか?

4

4 に答える 4

10

私はこの問題を抱えていました - 私のプロジェクト (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");
于 2012-10-24T11:21:30.140 に答える
2

上記のジョンの答えを拡張します。ファイルから構成をロードするためのカスタム コード。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);       
        }
    }
于 2015-04-21T21:07:28.000 に答える
1

クラスパスを確認することをお勧めします。src のみがクラスパスにあり、config フォルダーにはないようです。私の場合、*.ccf ファイルはクラスパスにある config ディレクトリに配置されており、ccf ファイルへのパスを /client_cache.ccf として指定するだけで、JCS がそれを取得できます。

また、展開環境によっても異なります。ただし、クラスパスに /config がリストされている場合は機能するはずです。

于 2012-05-30T02:59:46.357 に答える