Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2011, 12:48
darkram
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
applet y mysql

Hola compañeros.

Os escribo este post pq ando un poco desesperado.

Problema: tengo un applet de un chat en java que esta constantemente a traves de un timer leyendo de una base de datos los usuaris que estan activos en la tabla usuaris_chat, bien esto funciona perfecto en el APPLET VIEWER el problema viene al incrustarlo dentro del navegar que el applet carga pero no tiene comunicacion con la base de datos, es como si no detectara la libreria de mysql en jar, por lo que dice, aunque si que la tiene carga en el tag adecuado, nose si esque estoy haciendo algo mal !!

Adjunto mi codigo:


Clase java principal

Código JAVA:
Ver original
  1. import java.awt .*;
  2.  import java.awt.event .*;
  3.  import javax.swing.*;
  4.  import javax.swing.Timer;
  5.  
  6. /*
  7.  * ChatApplet.java
  8.  *
  9.  * Creat el 10/05/2011, a les 19:17:44
  10.  *
  11.  * @author franki
  12.  */
  13. public class ChatApplet extends JApplet{
  14.  
  15.          Timer temps;
  16.  
  17.     @Override
  18.     public void init() {
  19.         temps  = new Timer(500, new ActionListener(){
  20.             public void actionPerformed(ActionEvent ae){
  21.               ActualitzaLlista al = new ActualitzaLlista();
  22.              try{
  23.               jLlistaUsuaris.setListData(al.listar());
  24.              }catch(Exception e){
  25.                  System.out.println("ERROR al llistar");
  26.              }
  27.             }
  28.     });
  29.         temps.start();
  30.         try {
  31.             java.awt.EventQueue.invokeAndWait(new Runnable() {
  32.                 public void run() {
  33.                     initComponents();
  34.                 jTextArea.setEditable(false);
  35.                 jTextArea.setText("Conectando con el servidor...");
  36.  
  37.                }
  38.             });
  39.         } catch (Exception ex) {
  40.             ex.printStackTrace();
  41.         }
  42.         getContentPane().setBackground(new Color(236, 153, 50));
  43.     }
  44.  
  45.     /** This method is called from within the init() method to
  46.      * initialize the form.
  47.      */
  48.     @SuppressWarnings("unchecked")
  49.     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  50.     private void initComponents() {
  51.  
  52.         jScrollPane1 = new javax.swing.JScrollPane();
  53.         jLlistaUsuaris = new javax.swing.JList();
  54.         jTextEnviar = new javax.swing.JTextField();
  55.         jScrollPane2 = new javax.swing.JScrollPane();
  56.         jTextArea = new javax.swing.JTextArea();
  57.         jBotoEnviar = new javax.swing.JButton();
  58.  
  59.         setBackground(new java.awt.Color(236, 153, 50));
  60.         setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
  61.  
  62.         jLlistaUsuaris.setModel(new javax.swing.AbstractListModel() {
  63.             String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
  64.             public int getSize() { return strings.length; }
  65.             public Object getElementAt(int i) { return strings[i]; }
  66.         });
  67.         jScrollPane1.setViewportView(jLlistaUsuaris);
  68.  
  69.         jTextEnviar.setFont(new java.awt.Font("DejaVu Sans", 0, 16));
  70.         jTextEnviar.addActionListener(new java.awt.event.ActionListener() {
  71.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  72.                 jTextEnviarActionPerformed(evt);
  73.             }
  74.         });
  75.  
  76.         jTextArea.setColumns(20);
  77.         jTextArea.setRows(5);
  78.         jScrollPane2.setViewportView(jTextArea);
  79.  
  80.         jBotoEnviar.setBackground(new java.awt.Color(250, 250, 119));
  81.         jBotoEnviar.setText("ENVIAR");
  82.         jBotoEnviar.addActionListener(new java.awt.event.ActionListener() {
  83.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  84.                 jBotoEnviarActionPerformed(evt);
  85.             }
  86.         });
  87.  
  88.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  89.         getContentPane().setLayout(layout);
  90.         layout.setHorizontalGroup(
  91.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  92.             .addGroup(layout.createSequentialGroup()
  93.                 .addContainerGap()
  94.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  95.                     .addComponent(jTextEnviar, javax.swing.GroupLayout.DEFAULT_SIZE, 504, Short.MAX_VALUE)
  96.                     .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 504, Short.MAX_VALUE))
  97.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  98.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  99.                     .addComponent(jBotoEnviar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  100.                     .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 97, Short.MAX_VALUE))
  101.                 .addContainerGap(36, Short.MAX_VALUE))
  102.         );
  103.         layout.setVerticalGroup(
  104.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  105.             .addGroup(layout.createSequentialGroup()
  106.                 .addContainerGap()
  107.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  108.                     .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE)
  109.                     .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE))
  110.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  111.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  112.                     .addComponent(jTextEnviar, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
  113.                     .addComponent(jBotoEnviar, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE))
  114.                 .addGap(13, 13, 13))
  115.         );
  116.     }// </editor-fold>//GEN-END:initComponents
  117.  
  118.     private void jTextEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextEnviarActionPerformed
  119.         // TODO add your handling code here:
  120.     }//GEN-LAST:event_jTextEnviarActionPerformed
  121.  
  122.     private void jBotoEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoEnviarActionPerformed
  123.         jTextArea.setText(jTextArea.getText()+"\n"+jTextEnviar.getText());
  124.         jTextEnviar.setText(null);
  125.     }//GEN-LAST:event_jBotoEnviarActionPerformed
  126.  
  127.  
  128.     // Variables declaration - do not modify//GEN-BEGIN:variables
  129.     private javax.swing.JButton jBotoEnviar;
  130.     private javax.swing.JList jLlistaUsuaris;
  131.     private javax.swing.JScrollPane jScrollPane1;
  132.     private javax.swing.JScrollPane jScrollPane2;
  133.     private javax.swing.JTextArea jTextArea;
  134.     private javax.swing.JTextField jTextEnviar;
  135.     // End of variables declaration//GEN-END:variables
  136.  
  137.  
  138.  
  139. }

Clase que lee de la base de datos

Código JAVA:
Ver original
  1. /**
  2.  *
  3.  * @author franki
  4.  */
  5. import java.sql.*;
  6.  
  7. public class ActualitzaLlista {
  8.  
  9.     private String[] lista = new String[100];
  10.  
  11.     public void llegirBD(){
  12.               for(int j=0;j<100;j++){
  13.                   lista[j] = "";
  14.               }
  15.  
  16.         try {
  17.             int i = 0;
  18.             //Busca el driver per al tipus de DBMS en questio
  19.             Class.forName("com.mysql.jdbc.Driver");
  20.             //Definint url de connexio amb la base de dades
  21.             //el nom de la BD és "mydb"
  22.             Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mydb?user=root&amp;password=");
  23.             // Crear anunciat
  24.             Statement st = con.createStatement();
  25.  
  26.             ResultSet tabla = st.executeQuery("SELECT nick_chat FROM usuaris_chat where actiu = true");
  27.             while(tabla.next()){
  28.                 System.out.println(tabla.getString(1));
  29.                 lista[i] = tabla.getString(1);
  30.                 i++;
  31.             }
  32.  
  33.  
  34.         }catch(ClassNotFoundException e){
  35.             e.printStackTrace();
  36.         }
  37.         catch(SQLException e){
  38.             e.printStackTrace();
  39.             System.out.println(e.getMessage() + e.getErrorCode());
  40.         }
  41.         catch(Exception e){
  42.             e.printStackTrace();
  43.         }
  44.   }
  45.      public String[] listar(){
  46.          llegirBD();
  47.          return  lista;
  48.      }
  49. }

Codigo HTML que carga el applet

Código HTML:
Ver original
  1. <applet
  2.  
  3. code="ChatApplet.class"
  4.  
  5. ARCHIVE="mysql-connector-java-5.1.15-bin.jar;ActualitzaLlista.class"
  6.  
  7. width="730"
  8.  
  9. height="470"
  10.  
  11. >
  12.  
  13. </applet>
  14. <title>Chat Java</title>
  15. <body bgcolor="#ec9932">
  16. </body>
  17. </html>

PD: Recuerdo que en el applet viewer funciona perfecto.

PD2: Desde la consola de errores de google chrome sale:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Salu2 y mil gracias por su tiempo