Olá pessoal, sei que esse assunto já foi abordado antes mas ainda não consegui resolver meu problema.
Eu quero executar um commando na maquina host de onde está o applet, mas qdo o comando é executado recebo um erro exception de segurança.
Erro: java.security.AccessControlException: access denied(java.io.FilePermission <> execute)
Meu código é este:
public void paint(Graphics g)
{
super.paint(g);
String str = null;
String comando = "ls";
try
{
Process p = Runtime.getRuntime().exec(comando); //executa o comando
g.drawString("Executando comando 1",20,20);
BufferedReader br1 = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((str = br1.readLine()) != null)
g.drawString(str,20,40);
while ((str = br2.readLine()) != null)
g.drawString(str,20,60);
br1.close();
br2.close();
} catch(Exception ex) {
g.drawString("Erro: "+ex,20,100);
}
}
Já li vários artigos, dizendo que preciso autenticar a applet para executar comandos, mas nos artigos os comandos eram para o client, eu quero executar na maquina host.
Alguém tem alguma idéia de como fazer isto ?
[]'s
Rogério
Vamos ver se eu entendi :
Vc tem um applet, o qual vc disponibilizou em algum host ( tipo o Tomcat ou qualquer outro Web Server ) e vc quer executar um comando
nesta máquina host ou seja, vc quer executar um comando no Web Server.
Se for realmente isso significa que vc ainda não entendeu totalmente o funcionamento dos Applets.
Os Applets não rodam na maquina servidora, na verdade elas rodam na máquina client, o que ocorre é que quando o browser encontra uma tag <APPLET> em um HTML o qual ele está traduzindo, ele inicializa a Java Virtual Machine, e esta solicita ao web server ,atravéz do ClassLoader,as classes necessárias para a execução do Applet.
Quando estas classes foram todas carregadas, o mecanismo de Applets chama os metodos init , start e tudo mais que vc já deve saber.
Para conseguir o que vc quer, vc deve usar um Servlet, o qual não tem restrições como os Applets e os mesmos rodam na VM da maquina servidora. Veja algum tutorial sobre comunicação entre Applets e Servlets
para concluir sua funcionalidade.
Claudio Gualberto.
SCJP 2 1.4
Valeu Claudio, era isso mesmo que eu procurava.
Realmente eu estava enganado, como eu havia feito uma conexão ao banco de dados do servidor, achei que também era possível executar direto um comando nele. Mas só é possível por meio terceiros, como servlet.
E isso funcionou belezinha.
Comunicação Applet com Servlet - Minha solução
Mais uma vez, obrigado Claudio.
[]'s
Rogério