Applet nao encontra driver do Postgre

7 respostas
S
Estou desenvolvendo um Applet que acessa um Banco no Postgre, so que quando estou testando o Applet na minha maquina pelo browser ele nao consegue achar o driver do banco, quando rodo pelo netbeans ele rodo normal e pelo browser quando nao acesso o banco a interface roda normal.


[code]
public class BancoDados {
    
    
    private  Connection conexao; 
    private Statement statement;
    private ResultSet resultSet;
    String driver = "org.postgresql.Driver";
    String url = "jdbc:postgresql:catalogo";
    
    String usuarioBD = "postgres";
    String senha = "saldanha";
    private JTable table;
    public BancoDados() throws SQLException, IOException {
        
        // Carrega o driver para permitir conexão ao banco de dados
            try {
                Class.forName(driver);
                criaConexao();
                //conexao = DriverManager.getConnection(url, usuarioBD, senha);
                System.out.println("...Conectado...");
	    }
	    catch(ClassNotFoundException e) {
		e.printStackTrace();
		JOptionPane.showMessageDialog( null, "..2 - Nao conecta ao Banco....."  );
                return;
	    }
            
                
    }



public void criaConexao(){
        try {
            conexao = DriverManager.getConnection(url, usuarioBD, senha);
        } catch (SQLException ex) {
            Logger.getLogger(BancoDados.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

7 Respostas

T

Será que você pode desenvolver sua aplicação sem ser como applet (por exemplo, uma aplicação Web ou Desktop, ou mesmo Java Web Start)? Se você tentar acessar bancos de dados via applet, vai abrir uma verdadeira “lata de minhocas”.
Eu até tenho uma idéia de como se faria isso, mas não recomendo para ninguém que tenha estômago fraco, devido a más experiências com coisas semelhantes.

S

Nessa altura do campeonato nao tenho mais tempo.

T

Então vou dar os passos básicos, mas como eles são bastante complexos, você vai ter de se virar para executá-los. Como nunca os fiz não consigo ajudar muito se houver algum problema.

Eu recomendaria, em vez de quebrar a cabeça, transformar em uma aplicação stand-alone (que você pode disponibilizar via Java Web Start).

a) Assine digitalmente a applet - você é obrigado a criar o JAR; não dá para você deixar os .class todos soltos
b) Assine também o(s) JAR(s) do PostgreSQL
c) Ponha tudo (o jar da applet e do PostgreSQL) no mesmo diretório - cuidado que applets são considerados como imagens, então os arquivos .jar têm de ficar junto com as partes estáticas do site. Portanto eles não podem ficar, por exemplo, em WEB-INF, ou no mesmo diretório do JSP; para facilitar, deixe no mesmo diretório das imagens do site
d) Não se esqueça do tag < APPLET > ele é muito importante, se você escrevê-lo incorretamente vai dar problemas
e) Teste, teste, teste. Não se esqueça que o Java tem um cache de applets separado do browser, então você tem de ir até o Control Panel -> Java e ficar limpando o cache de applets para testar.

Mesmo fazendo tudo isso, com certeza não vai funcionar no IE7 + Windows Vista. Certeza absoluta.

Está ciente disso?

S

Não estou ciente não, porque nao funciona?
Com relação a assinar o applet pelo o que eu li so se eu precisar acessar algum recurso na maquina do cliente, ou não?

T

a) O IE7 + Windows Vista têm um novo modelo de execução para applets e ActiveX que não os permite fazer absolutamente nada, mesmo que forem assinados digitalmente. Mesmo mexendo em um monte de configurações do Vista isso não vai funcionar, porque é alguma coisa que você não pode passar por cima.
b) É isso mesmo, mas o Java considera que “acessar um socket” (que é o que o driver do PostgreSQL faz) também requer assinatura digital.
c) Acho que você vai perder 2 ou mais semanas tentando fazer isso funcionar (sendo que já avisei que não vai funcionar no IE7 + Windows Vista) . É melhor negociar mais alguns dias e converter seu applet para uma aplicação normal, desktop.

S

thingol com relação a JWS há modificação que eu teria de fazer seria:
1- Substituir minha classe que extend JApplet por uma que extende JFrame
2 - Criar o Arquivo JNLP.

Com relação a conexão com o banco de dados nada iria mudar?

outra coisa só para confirmar a aplicação rodaria no linux e no windows?

T
  1. Seria mais ou menos isso, a menos que você use alguma coisa que interaja com o browser (pacote netscape.javascript.*)

  2. A conexão acho que fica igual.

  3. Acho que no caso de JWS é preciso assinar sua aplicação digitalmente, mas nesse caso é mais fácil que ficar lutando com o browser.

  4. No Linux acho que o suporte a JWS é meio irregular. Por via das dúvidas, instale o JDK no seu Linux, e vá até o site do Java Tutorial e veja se os exemplos (que rodam usando Java Web Start) estão rodando corretamente.

Criado 16 de abril de 2008
Ultima resposta 16 de abr. de 2008
Respostas 7
Participantes 2