java.security.AccessControlException:Acesso negado (preferências java.lang.RuntimePermission)
-
13-11-2019 - |
Pergunta
Estou tentando executar um agente Java no console do servidor e recebo esta exceção:
Agent Manager: Agent printing: WARN AppLogger.java:246 initialize() Could not find a log4j.properties resource! Defaulting to app.log output.
Agent Manager: Agent error: Exception in thread "AgentThread: FTPBB"
Agent Manager: Agent error: java.lang.ExceptionInInitializerError
Agent Manager: Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
Agent Manager: Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
Agent Manager: Agent error: at com.bloomberg.datalic.api.ExtendedFTPConnection.<clinit>(ExtendedFTPConnection.java:2780)
Agent Manager: Agent error: at java.lang.J9VMInternals.initializeImpl(Native Method)
Agent Manager: Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
Agent Manager: Agent error: at FTP.<init>(FTP.java:93)
Agent Manager: Agent error: at FTPBB.NotesMain(FTPBB.java:110)
Agent Manager: Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
Agent Manager: Agent error: at lotus.domino.NotesThread.run(Unknown Source)
Agent Manager: Agent error: Caused by:
Agent Manager: Agent error: java.security.AccessControlException: Access denied (java.lang.RuntimePermission preferences)
Agent Manager: Agent error: at java.security.AccessController.checkPermission(AccessController.java:108)
Agent Manager: Agent error: at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)
Agent Manager: Agent error: at java.util.prefs.Preferences.userRoot(Preferences.java:443)
Agent Manager: Agent error: at com.bloomberg.datalic.util.DLPreferencesTree.<init>(DLPreferencesTree.java:29)
Agent Manager: Agent error: at com.bloomberg.datalic.util.DLPreferencesTree.getInstance(DLPreferencesTree.java:44)
Agent Manager: Agent error: at com.bloomberg.datalic.util.DLPreferenceNode.<clinit>(DLPreferenceNode.java:19)
Agent Manager: Agent error: at java.lang.J9VMInternals.initializeImpl(Native Method)
Agent Manager: Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
Agent Manager: Agent error: ... 8 more
O agente usa duas bibliotecas jar externas da Bloomberg.Esses dois são importados para o agente e também colocados no diretório domino/jvm/lib no servidor.
A exceção é lançada ao chamar o construtor de classe de uma das classes da biblioteca importada.
O agente funciona bem ao ser executado manualmente no cliente Designer.
Acho que devo editar os arquivos java.pol* mas minha experiência aqui é bastante limitada, infelizmente…
Conselho por favor
/Mike
Solução 2
Agora eu descobri isso.O arquivo java.pol não é usado, apesar do arquivo java.security indicar que ele deveria ser incluído.
Para fazer isso funcionar, você precisa alterar o arquivo java.policy.Posso dizer que isso não é a solução preferida, pois o arquivo .pol deve ser deixado para concessões adicionadas pelo usuário e o arquivo .policy é o arquivo JVM padrão do Domino.
Outras dicas
Você está sentindo falta do preferências Permissão de tempo de execução:
java.security.AccessControlException:Acesso negado (java.lang.RuntimePermission preferências)
O mínimo que você precisa fazer é adicionar um RuntimePermission para seu arquivo de política:
grant {
permission java.lang.RuntimePermission "preferences";
};
Depois de superar essa exceção, você provavelmente obterá mais, mas é melhor do que permitir todas as permissões.