2012-05-24 23 views
7

Próbuję zmienić ścieżkę pliku cache.ccf około godziny ...
Kiedy dzwonię JCS.getInstance("myRegion"); Dostaję taki błąd:Jak zmienić ścieżkę pliku JCS cache.ccf?

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

starałem się umieścić w cache.ccf folder src. W tym przypadku wszystko jest w porządku. Ale chcę, aby był w katalogu ./config/, a nie w ./src. Próbowałem zmienić config nazwę pliku:

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

Ale to nie działa, a ja otrzymuję ten sam błąd:

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

szwy że JCS próbuje znaleźć plik o nazwie "../config/cache.ccf" w katalogu src.
Znalazłem to zdanie:
Ścieżka klas powinna zawierać katalog, w którym znajduje się ten plik, lub plik powinien zostać umieszczony w katalogu głównym ścieżki klasy, ponieważ jest automatycznie wykrywany.

Jednak moja aplikacja nie działa, nawet jeśli plik cache.ccf znajduje się w katalogu głównym projektu.
Jak mogę zmienić ścieżkę pliku cache.ccf?

Odpowiedz

1

Możesz sprawdzić swoją ścieżkę klas. Wygląda na to, że tylko src znajduje się w ścieżce classpath, a nie config. Dla mnie mam pliki * .ccf umieszczone w katalogu config, który jest w mojej ścieżce klas i muszę tylko określić ścieżkę do pliku ccf jako /client_cache.ccf, aby JCS je odebrał.

Zależy to również od środowiska wdrażania. Jednak jeśli masz/config podaną w ścieżce klas, powinno działać.

8

Miałem ten problem - a ponieważ w moich projektach jest wiele programów ładujących klasy (oś2, tomcat), może być całkiem trudno znaleźć miejsce na plik cache.ccf. Nie korzystałem z pliku .properties i nie konfigurowałem go bezpośrednio - oto jak to zrobiłem ...

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

w JCS 1.3 wszystkie właściwości poprzedzone org.apache.commons.jcs. należy zastąpić org.apache.jcs. – myset

2

Rozszerzanie odpowiedzi Jona powyżej. Kod niestandardowy do ładowania konfiguracji z pliku. Umieść go przed utworzeniem 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);  
     } 
    } 
Powiązane problemy