Applet java rodando em apache

1 resposta
rvcabral

olá colegas,

estou ocm o seguinte problema:

preciso de um chat java que rode via applet num servidor apache.

fiz um applet com sockets, o mesmo do livro “use a cabeça”.

porém não roda o applet na web devido a restrições dos applets.
preciso de alguma adaptação ou outra sugestão de como fazer isto.

segue o cliente:

public class Cliente extends JApplet implements Runnable {

    /** Initializes the applet Cliente */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                    setUpNetworking();
                     Thread readerThread = new Thread(new IncomingReader());
                     readerThread.start();

                }
         
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
   
                       
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        conversa = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        enviar = new javax.swing.JTextArea();
        brEnviar = new javax.swing.JButton();

        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        conversa.setColumns(20);
        conversa.setEditable(false);
        conversa.setLineWrap(true);
        conversa.setRows(5);
        conversa.setWrapStyleWord(true);
        jScrollPane1.setViewportView(conversa);

        enviar.setColumns(20);
        enviar.setLineWrap(true);
        enviar.setRows(5);
        enviar.setWrapStyleWord(true);
        jScrollPane2.setViewportView(enviar);

        brEnviar.setText("enviar");
        brEnviar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                brEnviarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 955, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(brEnviar)
                .addGap(26, 26, 26)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(595, 595, 595))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE)
                .addGap(604, 604, 604))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(37, 37, 37)
                        .addComponent(brEnviar))
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(1266, 1266, 1266))
        );
    }                 

    private void brEnviarActionPerformed(java.awt.event.ActionEvent evt) {                                         
       
          try {
               // System.out.println(enviar.getText());
                writer.println(enviar.getText());
                writer.flush();


            } catch (Exception e) {
                System.out.println("erro no actionListner "+ e);
            }


            enviar.setText("");
            enviar.requestFocus();

    }                                        

    public void run() {
        //metodo run para utilizar como thread

       this.init();
    }


      public class IncomingReader implements Runnable{

        public void run() {
           String message;

            try {
                while ((message = reader.readLine()) != null) {

                    //System.out.println("lendo "+ message);
                    conversa.append(message + "\n");        



                }


            } catch (Exception e) {
                System.out.println("erro no imcomingReader "+ e);
            }


        }



    }


   private void setUpNetworking(){
        try {

            sock = new Socket("127.0.0.1", 5000);
            InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
            reader = new BufferedReader(streamReader);
            writer = new PrintWriter(sock.getOutputStream());
            System.out.println("conexão estabelecida!");



        } catch (Exception e) {
            System.out.println(" erro no setUpNetworking "+ e);
        }


    }

              
    private javax.swing.JButton brEnviar;
    private javax.swing.JTextArea conversa;
    private javax.swing.JTextArea enviar;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
                  

    BufferedReader reader;
    PrintWriter writer;
    Socket sock;

}

agora a classe servidor:

public class VerySimpleChatServer implements Runnable{

    ArrayList clienteOutputStreams;

    public void run() {
        go();
    }


    public class ClienteHandler implements Runnable{

        BufferedReader reader;
        Socket sock;

        public ClienteHandler(Socket clientsocket){

            sock = clientsocket;

            try {
                InputStreamReader isReader;
                isReader = new InputStreamReader(sock.getInputStream());
                reader = new BufferedReader(isReader);


            } catch (IOException ex) {
                System.out.println("erro no ClientHandler " + ex);
            }


        }

        public void run() {
           String message;

            try {
                while ((message = reader.readLine()) != null) {

                    System.out.println("lendo no servidor "+ message);
                    tellEveryone(message);
                }

            } catch (Exception e) {
            }
        }

    }

    public static void main(String[] args) {

        new VerySimpleChatServer().go();
    }


    public void go(){
        clienteOutputStreams = new ArrayList();

        try {

            ServerSocket serverSocket = new ServerSocket(5000);
            while(true){
                
                Socket clientSocket = serverSocket.accept();
                PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
                clienteOutputStreams.add(writer);
                Thread t = new Thread(new ClienteHandler(clientSocket));
                t.start();
                System.out.println("conectando");
            }



        } catch (Exception ex) {
            System.out.println("erro no metodo go "+ ex);
        }

    }


    public void tellEveryone(String message){
        Iterator it = clienteOutputStreams.iterator();

        while (it.hasNext()) {

            try {

                PrintWriter writer = (PrintWriter) it.next();
                writer.println(message);
                writer.flush();


            } catch (Exception e) {
                System.out.println("erro no tellEveryone "+ e);

            }

        }



    }

}

pela ferramente netbeans executando primeiro o servidor, e depois o cliente (ou os clientes roda bonitinho).
ja no browser não.

obrigado

1 Resposta

rvcabral

.

Criado 5 de dezembro de 2009
Ultima resposta 5 de dez. de 2009
Respostas 1
Participantes 1