Configurer Tomcat pour utiliser un répertoire temporaire différent pour les téléchargements de fichiers

14

Mon instance Tomcat est assise sur un lecteur avec peu d'espace restant. L'application que j'exécute déplace les téléchargements de fichiers du serveur vers un NAS. Pendant le téléchargement, cependant, Tomcat conserve ce fichier localement, probablement dans le répertoire / temp.

Mon serveur a un deuxième lecteur de données avec beaucoup d'espace où je voudrais déplacer ce répertoire temporaire. Comment puis-je configurer Tomcat pour qu'il utilise un répertoire temporaire sur cet autre lecteur, c'est-à-dire. comment puis-je déplacer ce répertoire?

Edit: j'utilise Windows Server 2k3. J'ai essayé de définir la variable env CATALINA_TMPDIR, mais Tomcat semble l'ignorer.

Solution: j'utilise l'application "Monitor Tomcat" qui passe

-Djava.io.tmpdir = répertoire C: \ some \ default \

à la JVM. Cela outrepassait la variable environnementale que je définissais. Vous pouvez le trouver sous Java > Options Java

Changer cela a résolu mon problème.

rcampbell
la source

Réponses:

20

Le java.io.tmpdirdans Tomcat est défini sur $CATALINA_BASE/temp. Vous pouvez le modifier en définissant la $CATALINA_TMPDIRvariable d'environnement avant de lancer startup.shTomcat.

De catalina.sh:

#   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
#                   the JVM should use (java.io.tmpdir).  Defaults to
#                   $CATALINA_BASE/temp.
CoverosGene
la source
Cela semble fonctionner uniquement pour les systèmes * nix, car lorsque j'ai essayé de définir CATALINA_TMPDIR env var dans Windows 2k3 et démarré Tomcat, il a continué à utiliser le dossier temporaire par défaut.
rcampbell
Si vous définissez une variable d'environnement système dans Windows, vous devrez peut-être redémarrer avant qu'elle ne prenne effet.
CoverosGene
Sur Ubuntu, vous pouvez définir le répertoire temporaire dans/etc/default/tomcat7
beldaz
3

Sous Windows, si vous exécutez Tomcat en tant que service, vous disposez probablement d'une clé similaire à

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

Définissez la valeur de la chaîne options(double-cliquez pour ouvrir) à la fin de l'existant en tant que:

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

Cela a fonctionné pour moi.

Ken Smith
la source
1

Si vous êtes sous UNIX / Linux, vous pouvez simplement créer un lien symbolique entre votre répertoire temporaire sur un premier lecteur et le répertoire correspondant sur un deuxième lecteur. Ce n'est peut-être pas la solution la plus élégante, mais cela a fonctionné pour moi parfois.

Slava I.
la source