2011-10-30 8 views
5

Escribí una aplicación web de Grails para Tomcat que se abre y se lee desde un DB de Berkeley en ./data/transactions/foobar.¿Cómo obtengo el Directorio de trabajo actual para Grails/Tomcat Webapp?

Este código funciona bien en mi entorno Eclipse.

Pero cuando lo muevo al servidor, escupe esta excepción. No estoy seguro de dónde está el directorio de trabajo actual cuando despliegue los Grails en un archivo WAR como una aplicación web webapps en el servidor.

com.sleepycat.je.EnvironmentNotFoundException: (JE 4.1.10) ./data/transactions/Foobar 
Home directory: ./data/transactions/Foobar ENV_NOT_FOUND: 
EnvironmentConfig.setAllowCreate is false so environment creation is not permitted, but there are no log files in the environment directory. Environment is invalid and must be closed. 

Mi directorio de instalación de Tomcat en el servidor Linux es/usr/share/tomcat6. El directorio raíz de webapps es/usr/share/tomcat6/webapps. Nuestro directorio WAR está instalado en un subdirectorio llamado "bridge". La ruta de WAR a mi aplicación Grails está en/usr/share/tomcat6/webapps/bridge

He intentado poner ./data/transaction/Foobar en/usr/share/tomcat6/webapps y/usr/share/tomcat6/webapps/bridge, sin suerte.

También traté de poner ./data/transaction/Foobar en/usr/share/tomcat6 instalar el directorio base, también sin suerte.

Los siguientes son los errores que veo desde el servidor Tomcat:

Error 500: Executing action [index] of controller[com.ecmhp.ecmdatabridge.generators.GenerateEmiDigestsController] 
caused exception: (JE 4.1.10) ./data/transactions/Foobar 
    Home directory: ./data/transactions/Foobar ENV_NOT_FOUND: 
    EnvironmentConfig.setAllowCreate is false so environment creation is not permitted, but there are no log files in the environment directory. Environment is invalid and must be closed. 

Servlet: Grails

URI: /bridge/grails/generateEmiDigests/index.dispatch

Exception Message: (JE 4.1.10) ./data/transactions/Foobar 
Home directory: ./data/transactions/Foobar ENV_NOT_FOUND: 
EnvironmentConfig.setAllowCreate is false so environment creation is not permitted, but there are no log files in the environment directory. Environment is invalid and must be closed. 

Caused by: (JE 4.1.10) ./data/transactions/Foobar 
    Home directory: ./data/transactions/Foobar ENV_NOT_FOUND: 
    EnvironmentConfig.setAllowCreate is false so environment creation is not permitted, but there are no log files in the environment directory. Environment is invalid and must be closed. 

Cualquier ¿Cómo puedo configurar el directorio de trabajo actual para mi WAR de Tomcat para que encuentre los archivos Berkeley DB ./data/transaction? ¿O alguna idea de que puedo descubrir cuál es el directorio de trabajo actual en el que se lanzó mi aplicación Grails?

Respuesta

1

Si instala el complemento Consola de griales, que sólo puede funcionar

new File('test.html').absolutePath 

Para nuestra aplicación, esto devuelve /data/opt/tomcat/5.5/, así que me imagino que usted necesita para poner su directorio dentro/share/tomcat6/datos/usr transacciones

8

Si usted puede obtener una bodega de la judía 'grailsApplication', que es o puede ser autoinjected en diferentes partes del marco Griales que puede probar:

grailsApplication.mainContext.servletContext.getRealPath('/data/transactions/foobar') 
Cuestiones relacionadas