1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema Applet e MySql (ressuscitado).

Sei que o assunto já foi desgastado ao longo dos anos e todo mundo concorda (inclusive eu) que é ilógico fazer uma Applet conectar com um MySql direto. Porém, estou numa situação onde eu realmente preciso disso e não tenho escapatória. E, por favor, não me redirecionem para tópicos antigos, pois já testei mais de 30 soluções que já existem na internet e nenhuma chegou a solucionar meu problema (é claro que várias delas me ajudaram a chegar neste ponto que cheguei, porém nenhuma delas vence essa ultima barreira que encontrei.

Minha Applet abre um JFrame, e meu JFrame se conecta ao Banco de Dados. Essa dinêmica me trouxe todos os problemas comuns (carregamento de imagens, System.exit(0), etc), e os tópicos antigos me ajudaram.

Meu problema agora (e acredito ser o ultimo) é que não consigo obter a conexão com o MySql (comando getConnection do DriverManager). Minha estrutura é a seguinte:

  • site/... - arquivos do site
  • site/jogo.php - Página onde exibo a Applet
  • site/signedJOGO.jar - Minha JAR já Self-Signed
  • site/com - Pasta contida no mysql-connector.jar
  • site/org - Pasta contida no mysql-connector.jar

meu código para a Applet é:

<applet code="package.JanelaApplet" archive="signedJOGO.jar?1384192604" width=200 height=50>  
<param name="nome" value="Gustavo Vieira Figueiredo">  
<param name="codigo" value="1">  
<param name="usuario" value="gustafah">  
<param name="senha" value="123456">  
<param name="email" value="gustavovfigueiredo@email.com">  
</applet>

Meu trecho de conexão com o banco é o seguinte:

private Connection cnn; // Estabelecer a conexão
    private Statement stt; // Executar um comando no banco
    private ResultSet rs; // Receber o resultado de um comando

    private String url = "jdbc:mysql://127.0.0.1/bd_jogo_noite";
    private String user = "root";
    private String pass = "myroot";

    public void openDB() {
        try {
            System.out.println("Pegando referência da classe");
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("getConnection()");
            cnn = DriverManager.getConnection(url, user, pass);
            System.out.println("Criando Statement");
            stt = cnn.createStatement();
            System.out.println("Conexão criada com sucesso.");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("Não foi possível conectar a esse driver.");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

E meu StackTrace com o erro é:

https://www.filepicker.io/api/file/fuvyve3pSEqIlyAwqYBk

Conforme já dito, solucionei a maioria dos problemas comuns. Coloquei o conteúdo do JAR do mysql-connector na mesma pasta e assinei meu JAR para ter acesso irrestrito. Não sei mais o que falta fazer e não encontrei nenhum outro tópico que tenha algo a mais do que o que eu já fiz.

  • Você fez o grant para file.encoding, read? E já viu esses tutoriais? http://www.oracle.com/technetwork/java/dba-140353.html

    http://www.oracle.com/technetwork/java/data-142896.html#sec

    ViniGodoy   11 de nov de 2013
  • Tinha visto esse esquema de grant permission em alguns, mas nunca consegui ter muita certeza de onde se faz isso. Vou ver estes Tutoriais e dou retorno.

    Gustavo Vieira Figueiredo   11 de nov de 2013
  • Esse também é legal: http://docs.oracle.com/javase/tutorial/security/tour1/step2.html Basicamente vc deve criar o arquivo de permissões e configurar o applet para indica-lo. Se vc terá várias urls no site, cada uma terá que ter um arquivo de permissão.

    ViniGodoy   11 de nov de 2013
  • Segui os tutoriais, e isso me levou até a criação do arquivo de policy, mas ainda não entendo onde devo colocar este arquivo ou como ligá-lo à minha applet pelo navegador. Só vi como fazê-lo pelo appletviewer. Como faço esse processo de "Configurar o applet para iniciá-lo" que você disse?

    Gustavo Vieira Figueiredo   11 de nov de 2013
  • Algo sobre onde colocar o arquivo de policy?

    Gustavo Vieira Figueiredo   13 de nov de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags applet mysql ou faça a sua própria pergunta.