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?
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
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
Eu consertei isso definindo as permissões do meu programa Bash em execução para 755
ls abc.sh
chmod 755 abc.sh