2012-05-24 21 views
7

Estoy tratando de cambiar la ruta del archivo cache.ccf alrededor de una hora ...
Cuando estoy llamando JCS.getInstance("myRegion"); estoy recibiendo este error:¿Cómo cambiar la ruta del archivo JCS cache.ccf?

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

traté de poner en cache.ccf carpeta src. En este caso, todo está bien. Pero quiero que esté en el directorio ./config/, no en ./src. He intentado cambiar el nombre del archivo de configuración:

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

Pero no está funcionando y yo estoy recibiendo el mismo error:

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

Se costuras que JCS intenta encontrar el archivo llamado "../config/cache.ccf" en el directorio src.
Here encontré esta oración:
La classpath debe incluir el directorio donde se encuentra este archivo o el archivo debe colocarse en la raíz del classpath, ya que se descubre automáticamente.

Pero mi aplicación no funciona incluso si el archivo cache.ccf está en el directorio raíz del proyecto.
¿Cómo puedo cambiar la ruta del archivo cache.ccf?

Respuesta

1

Es posible que desee comprobar su classpath. Parece que solo src está en la ruta classpath y no en la carpeta config. Para mí tengo mis archivos * .ccf colocados en el directorio config que está en mi classpath y solo necesito especificar la ruta al archivo ccf como /client_cache.ccf para que JCS los recoja.

También depende de su entorno de despliegue. Sin embargo, si tiene/config enumerado en su classpath, debería funcionar.

8

He tenido este problema, y ​​debido a que hay varios cargadores de clases en mis proyectos (axis2, tomcat), puede ser bastante difícil averiguar dónde colocar el archivo cache.ccf. Terminé por no usar un archivo .properties y configurar directamente - esto es cómo lo hice ...

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

En JCS 1.3 todas las propiedades con el prefijo org.apache.commons.jcs. Debería reemplazarse con org.apache.jcs. – myset

2

Ampliando la respuesta de Jon anteriormente. Código personalizado para cargar la configuración desde el archivo. Ponlo antes de instanciar 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);  
     } 
    } 
Cuestiones relacionadas