APPLET acessando Banco de Dados

Colegas…

Primeiro achei que meu problema era configurações no TOMCAT, e o colega abaixo me respondeu assim:

dukejeffrie
JavaChild

Registro: 21/08/2002
Mensagens: 142

Colocada: 12/03/2003, 3:57 pm Assunto:


Olá!!

Agora que eu to vendo que sua dúvida pode ser interessante.

Você tem um applet que conecta-se a um BD (vamos esquecer que é Oracle) via JDBC, certo?

Seu tomcat vai fazer o mesmo? Sem EJB, né? Ótimo.

O que vc tá tendo é um SecurityException: Access Denied. Isso significa que seu applet tentou fazer uma coisa que ele não pode: abrir um socket.

Ele quer abrir um socket para o banco, e realmente ele não deve ter esse direito. Você tem que quebrar a aplicação em duas: um servidor, que faz todos os acessos ao banco, e um cliente leve, que contém a interface de usuário e recebe comandos.

eu normalmente quebro com RMI, e se vc já tem a aplicação pronta, é mais fácil também. Isso vai te deixar com uma aplicação 3-camadas: o banco, a rede, e a GUI. Cada uma tem que confiar nas outras duas.

Mas se vc quer fazer porcão, dá pra liberar o acesso ao applet assim:

  1. vc precisa de um arquivo policy com o seguinte conteudo:
    Código:

grant {
// Allow everything for now
permission java.security.AllPermission;
};

  1. Vc deve incluir a policy de alguma forma entre os parâmetros do seu applet. Como eu nunca fiz isso, não tenho código pronto, mas vc deve achar um jeito de setar uma System Property ou de setar diretamente o policy file. o policy deve estar junto com o JAR no diretório da aplicação. Se for pela System Property, ela chama “java.rmi.policy” e recebe um URI com o arquivo.

Aliás, sua dúvida nada tem a ver com o tomcat, a menos que vc esteja usando JNDI. Se for, olha a documentação do tomcat no site do jakarta.

boa sorte!!

Partindo da 2ª opção, fiz um arquivo policy, e adicionei ao projeto como parâmetro de compilação “-Djava.security.policy=file:/<caminho do arquivo>”
Porém de dentro do JBuilder funciona que é uma beleza. Rodo a APPLET fora do JBuilder, continuo com o problema.

O que estou fazendo de errado.??? Alguém pode me ajudar…???

Grato

Lopes