web-dev-qa-db-fra.com

préférences système java sous différents utilisateurs sous Linux

J'essaie d'exécuter plusieurs jvms (y compris Tomcat) sous différents utilisateurs sur une même boîte Linux. Je ne vois pas trop de problèmes, mais dans catalina.out, je continue à voir ceci:

May 30, 2014 1:16:16 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 7626 ms
May 30, 2014 1:16:37 PM Java.util.prefs.FileSystemPreferences$2 run
WARNING: Could not create system preferences directory. System preferences are unusable.
May 30, 2014 1:16:55 PM Java.util.prefs.FileSystemPreferences checkLockFile0ErrorCode
WARNING: Could not lock System prefs. Unix error code -158097957.
May 30, 2014 1:16:55 PM Java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush system prefs: Java.util.prefs.BackingStoreException: Couldn't get file lock.

J'ai creusé/lu et en ai déduit ce qui suit:

Un administrateur avec un accès root doit créer le répertoire de préférences système /etc/.Java/.systemPrefs with drwxr-xr-x access.

Java cherche /etc/.Java/.systemPrefs/.system.lock et /etc/.Java/.systemPrefs/.systemRootModFile

La création manuelle des fichiers ci-dessus (utilisez "touch" pour créer des fichiers vides) et les répertoires les contenant devraient être corrigés. Les droits sur les fichiers doivent être 544, les droits sur leurs répertoires doivent être 755, le propriétaire et le groupe sont la racine pour tous.

Mais

Je ne suis pas root, il est coûteux de demander à quelqu'un de l'exécuter et plusieurs utilisateurs exécutent jvms. Cela signifie-t-il que je dois créer ces fichiers et configurer des autorisations pour que tous les utilisateurs aient accès à ces privilèges?

Quelqu'un a-t-il déjà rencontré ce problème et, le cas échéant, existe-t-il une solution plus simple qui me manque?

12
iloveretards

Définissez ces paramètres par utilisateur:

mkdir -p ~/.Java/.systemPrefs
mkdir ~/.Java/.userPrefs
chmod -R 755 ~/.Java
export Java_OPTS="-Djava.util.prefs.systemRoot=/home/user/.Java -Djava.util.prefs.userRoot=/home/user/.Java/.userPrefs"
  <run appl>

Sans créer les répertoires, certaines machines virtuelles Java ont par défaut la valeur /etc/.

Voir aussi: Java - Définition du répertoire de sauvegarde du répertoire de sauvegarde

23
iloveretards

Je pense que même si vous avez des utilisateurs différents, la machine virtuelle Java lit toujours Tomcat comme un utilisateur unique, car le processus est identique. Peut-être avez-vous besoin d'un mécanisme de gestion des utilisateurs? Se connecter et se déconnecter

0
Benda

J'ai résolu ce problème en définissant les autorisations de mon programme Bash s'exécutant sur 755

ls abc.sh
chmod 755 abc.sh
0
bomgarato