2012-05-24 13 views
7

Ich versuche Weg der cache.ccf Datei etwa eine Stunde zu ändern ...
Als ich JCS.getInstance("myRegion"); bin Aufruf ich diesen Fehler:Wie ändere ich den Pfad der JCS cache.ccf Datei?

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

Ich versuchte cache.ccf zu setzen in src-Ordner. In diesem Fall ist alles in Ordnung. Aber ich möchte es in ./config/ Verzeichnis, nicht in ./src. Ich habe versucht, Konfigurationsdateinamen zu ändern:

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

Aber es funktioniert nicht, und ich bin mit dem gleichen Fehler:

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

Es scheint, dass JCS versucht, die Datei mit dem Namen "../config/cache.ccf" in src-Verzeichnis zu finden.
Here Ich habe diesen Satz gefunden:
Der Klassenpfad sollte das Verzeichnis enthalten, in dem sich diese Datei befindet, oder die Datei sollte im Stammverzeichnis des Klassenpfads platziert werden, da sie automatisch erkannt wird.

Aber meine Anwendung funktioniert nicht, selbst wenn cache.ccf-Datei im Stammverzeichnis des Projekts ist.
Wie kann ich den Pfad der cache.ccf-Datei ändern?

Antwort

1

Sie können Ihren Klassenpfad überprüfen. Es scheint, als wäre nur src im Ordner classpath und nicht config. Für mich habe ich meine * .ccf-Dateien in Config-Verzeichnis, das in meinem Classpath ist und ich muss nur den Pfad zur ccf-Datei als/client_cache.ccf angeben, damit JCS es aufheben.

Es hängt auch von Ihrer Bereitstellungsumgebung ab. Wenn Sie jedoch/config in Ihrem Klassenpfad aufgelistet haben, sollte es funktionieren.

8

Ich hatte dieses Problem - und weil es mehrere Klassenlader in meinen Projekten gibt (axis2, tomcat), kann es ziemlich schwierig sein, herauszufinden, wo die cache.ccf-Datei abgelegt werden soll. Ich habe keine .properties-Datei verwendet und direkt konfiguriert - hier ist, wie ich es gemacht habe ...

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

In jcs 1.3 alle mit org.apache.commons.jcs voran Eigenschaften. sollte durch org.apache.jcs ersetzt werden. – myset

2

Erweitern auf Jons Antwort oben. Benutzerdefinierter Code zum Laden der Konfiguration aus der Datei. Setzen Sie es, bevor Sie JCS instanziieren.

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);  
     } 
    }