5 Stimmen

Wie bekomme ich das aktuelle Arbeitsverzeichnis für Grails/Tomcat Webapp?

Ich habe eine Grails-Webanwendung für Tomcat geschrieben, die eine Berkeley DB auf ./data/transactions/foobar öffnet und liest.

Dieser Code läuft problemlos in meiner Eclipse-Umgebung.

Aber wenn ich es auf den Server verschiebe, wirft es diese Ausnahme aus. Ich bin mir nicht sicher, welches das aktuelle Arbeitsverzeichnis ist, wenn ich das Grails als WAR-Datei auf dem Server bereitstelle.

com.sleepycat.je.EnvironmentNotFoundException: (JE 4.1.10) ./data/transactions/Foobar
Home-Verzeichnis: ./data/transactions/Foobar ENV_NOT_FOUND:
EnvironmentConfig.setAllowCreate ist false, sodass die Erstellung der Umgebung nicht gestattet ist, aber es gibt keine Protokolldateien im Umgebungsverzeichnis. Umgebung ist ungültig und muss geschlossen werden.

Mein Tomcat-Installationsverzeichnis auf dem Linux-Server ist /usr/share/tomcat6. Das Root-Verzeichnis für die Webanwendungen ist /usr/share/tomcat6/webapps. Wir haben das WAR-Verzeichnis in einem Unterverzeichnis namens "bridge" installiert. Der WAR-Pfad meiner Grails-Anwendung befindet sich in /usr/share/tomcat6/webapps/bridge

Ich habe versucht, die ./data/transaction/Foobar sowohl in /usr/share/tomcat6/webapps als auch in /usr/share/tomcat6/webapps/bridge zu platzieren, aber ohne Erfolg.

Ich habe auch versucht, ./data/transaction/Foobar in das Installationsbasisverzeichnis /usr/share/tomcat6 zu setzen, auch ohne Erfolg.

Hier sind die Fehlermeldungen, die ich vom Tomcat-Server sehe:

Fehler 500: Ausführen der Aktion [index] des Controllers [com.ecmhp.ecmdatabridge.generators.GenerateEmiDigestsController]
hat die Ausnahme verursacht: (JE 4.1.10) ./data/transactions/Foobar
Home-Verzeichnis: ./data/transactions/Foobar ENV_NOT_FOUND:
EnvironmentConfig.setAllowCreate ist false, sodass die Erstellung der Umgebung nicht gestattet ist, aber es gibt keine Protokolldateien im Umgebungsverzeichnis. Umgebung ist ungültig und muss geschlossen werden.

Servlet: grails

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

Ausnahmemeldung: (JE 4.1.10) ./data/transactions/Foobar 
Home-Verzeichnis: ./data/transactions/Foobar ENV_NOT_FOUND: 
EnvironmentConfig.setAllowCreate ist false, sodass die Erstellung der Umgebung nicht gestattet ist, aber es gibt keine Protokolldateien im Umgebungsverzeichnis. Umgebung ist ungültig und muss geschlossen werden.

Verursacht durch: (JE 4.1.10) ./data/transactions/Foobar 
Home-Verzeichnis: ./data/transactions/Foobar ENV_NOT_FOUND: 
EnvironmentConfig.setAllowCreate ist false, sodass die Erstellung der Umgebung nicht gestattet ist, aber es gibt keine Protokolldateien im Umgebungsverzeichnis. Umgebung ist ungültig und muss geschlossen werden.

Haben Sie eine Idee, wie ich das aktuelle Arbeitsverzeichnis für mein Tomcat-WAR setzen kann, damit es die Berkeley-DB-./data/transaction-Dateien findet? Oder eine Idee, wie ich herausfinden kann, was das aktuelle Arbeitsverzeichnis ist, wenn meine Grails-App gestartet wird?

8voto

schmolly159 Punkte 3861

Wenn Sie Zugriff auf das 'grailsApplication'-Bean haben, das in verschiedenen Teilen des Grails-Frameworks autoinjiziert wird, können Sie Folgendes versuchen:

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

1voto

Tomas Lin Punkte 3532

Wenn Sie das Konsolen-Plugin für Grails installieren, können Sie einfach ausführen

new File( 'test.html' ).absolutePath

Für unsere App gibt dies /data/opt/tomcat/5.5/ zurück, also nehme ich an, dass Sie Ihr Verzeichnis innerhalb von usr/share/tomcat6/data/transactions platzieren müssen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X