Como liberar permissao de acesso do java - applet

4 respostas
W

Olá amigos, estou fazendo uma aplicação applet que cria uma instancia da minha main class que está dentro de um arquivo jar que coloquei na pasta lib\ext do java(coloquei neste diretorio pois isso carrega o jar automaticamente ao executar a JVM), porém ao rodar minha applet tenho a seguinte mensagem de erro:

java.security.AccessControlException: access denied (java.util.PropertyPermission java.home read)

at java.security.AccessControlContext.checkPermission(Unknown Source)

at java.security.AccessController.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)

at java.lang.System.getProperty(Unknown Source)

at org.jivesoftware.smack.ConnectionConfiguration.init(ConnectionConfiguration.java:121)

at org.jivesoftware.smack.ConnectionConfiguration.(ConnectionConfiguration.java:111)

at com.supridatta.jabber.user.FramePrincipal.recebeConnect(FramePrincipal.java:250)

 fiz de tudo, e não consegui. A principio eu queria liberar as permissoes em tempo de execução, para que não precisasse ficar alterando o policy na mão visto que tenho vários clientes que usarão esta aplicação, mas não consegui, então agora estou procurando uma maneira de configurar o policy para q me de permissão de acesso.

Será que vcs podem me ajudar a resolver este problema.

Agradeço desde já, e um grande abraço!

4 Respostas

R

oi wylly,
Primeiro, acho que vc deveria apagar um dos dois post’s que vc criou, pois são identicos e o pessoal aqui não admite mto isso, segundo, vc está usando linux? Já olhou as permissões do arquivo?

abraço,

Rodrigo.

L

Resposta do thiago.filadelfo movida para cá porque foi colocada em tópico apagado porque estava duplicado

Olá rapaz,
Pode ser essas duas coisas que ocorre isso:
1) Dar acesso privilegiado para applet
2) Assinar a applet com um certificado

Bom... vamos um exemplo de acesso privilegiado para applet
1. public String metodo() {  
   2.         AccessController.doPrivileged(  
   3.             new PrivilegedAction() {  
   4.                 public Object run() {  
   5.                                                                  // Colocar seu código  
   6.                 }  
   7.             }  
   8.         );        
   9.     }  

public String metodo() { AccessController.doPrivileged( new PrivilegedAction() { public Object run() { // Colocar seu código } } ); }

e para assinar a applet, tem esse link que explica passo a passo como
fazer a assinatura: http://www.inf.ufrgs.br/procpar/disc/cmp167/trabalhos/sem2001-1/T2/herrmann/

flwsss
espero ter ajudado

W

rdantas:
oi wylly,
Primeiro, acho que vc deveria apagar um dos dois post’s que vc criou, pois são identicos e o pessoal aqui não admite mto isso, segundo, vc está usando linux? Já olhou as permissões do arquivo?

abraço,

Rodrigo.

Olá amigo!
Desculpa por ter colocado um post duplicado, foi mau!
Então, respondendo sua pergunta, eu estou usando windows xp no vmware, cirei o software usando jdev no linux, mas estou executando a applet no windows.
E na segunda pergunta, eu já tentei liberar as permissões no arquivo policy mas não consigo, não assinei a applet pra evitar de sempre que um novo usuario for usar, ter que ficar aceitando autrizando, e isso vc sabe como é usuario né, derrepnte algém poderia nao gostar disso no meu applicativo, por isso gostaria de sabe se tem uma maneira de liberar as permissões no meu arquivo policy, e se eu conseguir fazer isso na minha makina, já é meio caminho andado, o problema é que não consegui ainda.
Só pra resumir o que estou fazendo, é um sistema pra usarmos na empresa onde trabalho, desenvolvemos software para empresas de moto(sundow e yamaha)e o que estou fazendo é um chat como icq, msn, gaim, só que este terá tudo que necessitamos para dar suporte aos clientes. Ele já ta funcionando belezinha, já rodei até em JWS, só que o consumo de memória é muito grande, e nossos clientes não possuem makinas muito boas, sabe como é né…então como nosso Sistema é Web, já usamos a makina virtual pra rodálo, e nossa idéa foi a seguinte, colocar nossa chat dentro da pasta ext do java, e qdo o usuário iniciar o nosso Sitema, o java já carregaria o nosso chat, mas nao o tornaria visible, ai qdo o ussuario clicar no icone de suporte so daria o visible no chat, e como ja temos a jvm executando pra rodar o sistema, nossa chat seria apenas mais um jar pra ela carregar, e isso diminuiu muito o consumo de memória, é exatamete o que precisamos, só preciso agora liberar as permissões para minha applet!

Espero ter conseguido explicar o que realmente preciso!

Grande abraço!

W
Luca:
Resposta do thiago.filadelfo movida para cá porque foi colocada em tópico apagado porque estava duplicado

Olá rapaz,
Pode ser essas duas coisas que ocorre isso:
1) Dar acesso privilegiado para applet
2) Assinar a applet com um certificado

Bom... vamos um exemplo de acesso privilegiado para applet
1. public String metodo() {  
   2.         AccessController.doPrivileged(  
   3.             new PrivilegedAction() {  
   4.                 public Object run() {  
   5.                                                                  // Colocar seu código  
   6.                 }  
   7.             }  
   8.         );        
   9.     }  


Amigo, 

Então, eu gerei um jar do meu programa, e o que fasso e construir uma applet que instancia um objeto da minha classe main do meu programa, pois meu jar ja é carregado direto qdo executo a jvm, porque eu coloquei ele dentro do dir lib\ext do java, abaixo o script da minha applet,  passando os parâmetros que ela necessita:

var v = top.aplt.getVector();
v.addElement("param_1");
v.addElement("param_2");
v.addElement("param_3");
v.addElement("meudominio/teste/java/texto.txt");
var frChat = top.aplt.getConstructor().getNewInstance("mainClass",v);
frChat.setVisible(true);

Então gostaria de saber onde coloco esse código que vc me passou? na minha applet ou em minha classe pra depois gerar o jar novamente?

Agradeço pela ajuda,

Abraço!


public String metodo() { AccessController.doPrivileged( new PrivilegedAction() { public Object run() { // Colocar seu código } } ); }

e para assinar a applet, tem esse link que explica passo a passo como
fazer a assinatura: http://www.inf.ufrgs.br/procpar/disc/cmp167/trabalhos/sem2001-1/T2/herrmann/

flwsss
espero ter ajudado

Criado 19 de janeiro de 2008
Ultima resposta 21 de jan. de 2008
Respostas 4
Participantes 3