Konfigurieren Sie Tomcat so, dass für das Hochladen von Dateien ein anderes temporäres Verzeichnis verwendet wird

12

Meine Tomcat-Instanz befindet sich auf einem Laufwerk mit wenig verbleibendem Speicherplatz. Die von mir ausgeführte Anwendung verschiebt Datei-Uploads vom Server auf einen NAS. Während des Uploads speichert Tomcat diese Datei jedoch lokal, vermutlich im Verzeichnis / temp.

Mein Server hat ein zweites Datenlaufwerk mit viel Speicherplatz, in das ich dieses temporäre Verzeichnis verschieben möchte. Wie kann ich Tomcat so konfigurieren, dass es ein temporäres Verzeichnis auf diesem anderen Laufwerk verwendet, d. H. Wie kann ich dieses Verzeichnis verschieben?

Bearbeiten: Ich verwende Windows Server 2k3. Ich habe versucht, die Umgebungsvariable CATALINA_TMPDIR festzulegen, aber Tomcat schien sie zu ignorieren.

Lösung: Ich verwende die "Monitor Tomcat" -Anwendung, die erfolgreich ist

-Djava.io.tmpdir = C: \ some \ default \ Verzeichnis

bei der JVM. Dies überschrieb die Umgebungsvariable, die ich einstellte. Sie finden es unter Java > Java-Optionen

Das zu ändern hat mein Problem behoben.

Campbell
quelle

Antworten:

18

Die java.io.tmpdirin Tomcat ist auf eingestellt $CATALINA_BASE/temp. Sie können dies ändern, indem Sie die $CATALINA_TMPDIRUmgebungsvariable vor der Ausführung startup.shfür Tomcat festlegen.

Von catalina.sh:

#   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
#                   the JVM should use (java.io.tmpdir).  Defaults to
#                   $CATALINA_BASE/temp.
CoverosGene
quelle
Dies scheint nur für * nix-Systeme zu funktionieren, da ich beim Festlegen von CATALINA_TMPDIR env var in Windows 2k3 und beim Starten von Tomcat weiterhin den Standard-temporären Ordner verwendet habe.
Campbell
Wenn Sie eine Systemumgebungsvariable in Windows festlegen, müssen Sie möglicherweise einen Neustart durchführen, bevor sie wirksam wird.
CoverosGene
Unter Ubuntu können Sie das temporäre Verzeichnis in/etc/default/tomcat7
beldaz
3

Wenn Sie unter Windows Tomcat als Dienst ausführen, haben Sie wahrscheinlich einen ähnlichen Schlüssel wie

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\myApplication\Parameters\Java

Legen Sie den Zeichenfolgewert options(Doppelklick zum Öffnen) am Ende des Bestehenden wie folgt fest:

-Djava.io.tmpdir=c:\{yourDir}

Das hat bei mir funktioniert.

Ken Smith
quelle
1

Unter UNIX / Linux können Sie Ihr temporäres Verzeichnis auf einem ersten Laufwerk einfach mit dem entsprechenden Verzeichnis auf einem zweiten Laufwerk verknüpfen. Vielleicht keine besonders elegante Lösung, aber irgendwann hat es bei mir geklappt.

Slava I.
quelle