Как получить текущий рабочий каталог для Grails / Tomcat Webapp? - PullRequest
5 голосов
/ 31 октября 2011

Я написал веб-приложение Grails для Tomcat, которое открывается и читает из БД Berkeley по адресу ./data/transactions/foobar.

Этот код отлично работает в моей среде Eclipse.

Но когдаЯ перемещаю его на сервер, он выплевывает это исключение.Я не уверен, где находится текущий рабочий каталог при развертывании Grails в файле WAR в качестве веб-приложения веб-приложения на сервере.

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.

Мой установочный каталог Tomcat на сервере Linux - / usr / share /tomcat6.Корневой каталог веб-приложений - / usr / share / tomcat6 / webapps.Наш каталог WAR находится в подкаталоге с именем «bridge».Путь WAR к моему приложению Grails находится в / usr / share / tomcat6 / webapps / bridge

Я попытался поместить ./data/transaction/Foobar в / usr / share / tomcat6 / webapps и / usr /share / tomcat6 / webapps / bridge, но безуспешно.

Я также попытался поместить ./data/transaction/Foobar в базовый каталог установки / usr / share / tomcat6, тоже безуспешно.

Ниже приведены ошибки, которые я вижу на сервере 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.

Сервлет: 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.

Есть идеи, как настроить текущий рабочий каталог для моей Tomcat WAR, чтобы он находил файлы Berkeley DB ./data/transaction?Или я могу узнать, в каком текущем рабочем каталоге запущено мое приложение Grails?

Ответы [ 2 ]

8 голосов
/ 31 октября 2011

Если вы можете получить бин 'grailsApplication', который автоматически вводится или может быть внедрен в различные части платформы Grails, вы можете попробовать:

1 голос
/ 31 октября 2011

Если вы установите плагин Console для Grails, вы можете просто запустить

new File( 'test.html' ).absolutePath

Для нашего приложения это возвращает /data/opt/tomcat/5.5/, поэтому я думаю, что вам нужно поставитькаталог внутри usr / share / tomcat6 / data / Transactions

...