Pessoal, tenho uma aplicação desenvolvida em java, struts, jsp, e ao publicar no tomcat instalado no linux ele funciona normal, mas ao publicar no tomcat instalado no linux kurumin apresenta a seguinte exceção:
alguém já passou por isso e sabe me dizer o que pode ser.
Poisé, aconteceu o mesmo problema comigo da seguinte forma:
Utilizo a IDE eclipse para desenvolver aplicações J2SE e J2EE.
O meu problema consiste em que fiz um conjunto de classes que utiliza o reflect para verificar annotations definidos em classes.
Quando rodo uma aplicação Java (método public static void main(String[])) que está contido no mesmo projeto destas tais classes, ela funciona. Ou seja, o método Class.getDeclaredFields() retorna os atributos declarados nas classes que eu verifico os annotations.
No entanto, fiz uma aplicação web (J2EE) que utiliza essas mesmas classes mapeando-as através de arquivos JARs incluidos no arquivo WAR. No entanto, quando estas classes são chamadas para verificar os annotations de classes do meu projeto web, eles lançam essa mesma exceção
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
java.security.AccessController.checkPermission(AccessController.java:546)
java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
java.lang.SecurityManager.checkMemberAccess(SecurityManager.java:1662)
java.lang.Class.checkMemberAccess(Class.java:2157)
java.lang.Class.getDeclaredFields(Class.java:1742)
br.ufsc.telemedicina.xml.xpath.XPathUtil.loadClass(XPathUtil.java:91)
…
Não sei mais o que fazer… já procurei na internet e não achei a solução.
Agradeço desde já qualquer ajuda.
Este erro é prq vc nao tem permissao em acessar os atributos das classes via Reflect neste caso vc precisa passar uma politica de segurança liberando o acesso:
[quote=ramilani12]Este erro é prq vc nao tem permissao em acessar os atributos das classes via Reflect neste caso vc precisa passar uma politica de segurança liberando o acesso:
Cara, valeu pela dica.
Mas ai surge outro problema: Vou ter que customizar a linha da JVM em cada servidor que eu colocar a minha aplicação, sendo que estes servidores rodam outras aplicações que não são minhas.
Não tem como eu fazer um arquivo de configuração de permissões que fique dentro do arquivo WAR da minha aplicação, especificando que isto é somente para a minha aplicação?
Outro problema: Vou ter que especificar cada classe já existente e/ou novas que venho a criar, neste arquivo de permissões? Não tem como eu simplesmente dizer que toda a minha aplicação permite reflection?
o tomcat de minha máquina (rodando o Ubuntu Gutsy 7.10), o qual uso para testes, roda como um serviço que inicia no boot do sistema operacional.
Fui atrás dos arquivos de policy e inseri o seguinte grant no arquivo <tomcat_home>/conf/policy.d/04webapps.policy:
grant {
permission java.lang.RuntimePermission "accessDeclaredMembers.br.ufsc.telemedicina.np.xpath.XMLConfigNP_API";
};
Mesmo assim, o problema ainda acontece.
Não sei como resolver isso.
O tutorial passado não explica como fazer e eu não achei nada em pesquisa pelo Google.
cara, estou tendo o mesmo problema ao rodar o struts-blank no ubuntu
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkMemberAccess(SecurityManager.java:1662)
at java.lang.Class.checkMemberAccess(Class.java:2157)
at java.lang.Class.getDeclaredFields(Class.java:1742)
at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:131)
at org.apache.jasper.runtime.AnnotationHelper.postConstruct(AnnotationHelper.java:44)
…
Tanto do struts 1 quanto o struts 2. a mesma coisa no menta.
Coloquei o tomcat na pasta opt, tem todas as permissões necessárias para rodar e estou utilizando o eclipse com o plugin para tomcat, mas quando levanto o tomcat e acesso pelo browser dá isso.