web-dev-qa-db-pt.com

preferências do sistema java sob diferentes usuários no linux

Eu estou tentando executar vários jvms (incluindo Tomcat) sob diferentes usuários em uma caixa linux. Eu não estou vendo muitos problemas, mas em catalina.out eu continuo vendo isso:

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.

Eu fiz algumas escavações/leituras e deduzi o seguinte:

Um administrador com acesso root deve criar o diretório de preferências do sistema /etc/.Java/.systemPrefs with drwxr-xr-x access.

Java está procurando por /etc/.Java/.systemPrefs/.system.lock e /etc/.Java/.systemPrefs/.systemRootModFile

Criando manualmente os arquivos acima (use "toque" para criar arquivos vazios) e seus diretórios contendo devem ser corrigidos. Direitos para os arquivos devem ser 544, direitos para seus diretórios devem ser 755, proprietário e grupo são a raiz para todos.

Mas

Eu não sou root, conseguir alguém para rodar root é caro e eu tenho vários usuários rodando jvms, isso significa que eu tenho que criar esses arquivos e configurar permissões apenas para que todos os usuários tenham acesso com esses privilégios?

Alguém já se deparou com este problema e se eles têm uma solução mais simples que eu estou ausente?

12
iloveretards

Defina estas configurações por usuário:

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>

Sem criar os diretórios, algumas máquinas virtuais Java são padronizadas para /etc/.

Consulte também: Java - Definindo o diretório de backingstore de preferências

23
iloveretards

Meu pensamento é que mesmo que você tenha usuários diferentes, a JVM ainda lê o Tomcat como um usuário, já que é o mesmo processo. Talvez você precise de um mecanismo de gerenciamento de usuários? Entrar e sair

0
Benda

Eu consertei isso definindo as permissões do meu programa Bash em execução para 755

ls abc.sh
chmod 755 abc.sh
0
bomgarato