Tutoriales, Descargas, Programacion
Java RMI (Chat Parte 2 — Servidor)
Buenas a todos los visitantes de la web.
Ahora pasaremos a la segunda parte de la seria de tutoriales de RMI sobre hacer un Chat en java. En esta parte veremos como se hace la interfaz del servidor y como se implementa en el servidor. Después de este tutorial tal vez haga un pequeño articulo acerca de interfaces antes de seguir con la 3ra parte para que los que no vayan entendiendo puedan seguir el ritmo.
Bueno para ver el tutorial sigan leyendo…
Interfaz del servidor
La interfaz solo llevara los metodos que se desarrollaran en el servidor. Aqui les dejo el codigo comentado:
import java.rmi.*; //importamos la libreria RMI de java public interface Chat extends Remote{ //heredamos Remote a la interface chat //Metodos que tendra el servidor public int registerClient(ClientRemote cr)throws RemoteException; //agregara clientes public void removeClient(int c)throws RemoteException; //removera clientes }
La interface es facil, no hay que explicar mucho, como les digo si no saben sobre interfaces en java el proximo tutorial hablara de ello antes de seguir avanzando mas en esta serie de tutoriales.
Ahora pasamos al código del server se los dejo aqui:
//TODOS LOS IMPORTS QUE SE USARAN import java.net.*; import java.io.*; import java.util.*; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; public class ChatServer extends java.rmi.server.UnicastRemoteObject implements Remote, Chat { //Ven en implements que sale "Chat" esa es nuestra interface private static ChatServer rmi; //hacemos un objeto de nuestro servidor private ClientRemote cr; //Sera el objeto de la interface del cliente Vector<ClientRemote> v = new Vector<ClientRemote>(); // un vector para saber que clientes estan conectados public ChatServer() throws java.rmi.RemoteException { super(); //super manda a llamar a la clase objeto que es de donde derivan todas. } public static void main(String[] args) { //ponemos parametros de seguridad para que podamos llamar a metodos remotamente System.setProperty("java.security.policy","file:/E:/RMI/CHATRMI/java.policy"); //se hara un tutorial sobre esto System.setSecurityManager(new SecurityManager()); try { rmi= new ChatServer(); //instanciamos nuestro servidor para llamar al super(); System.out.println("Registy is created...."); Naming.rebind("server", rmi); //le llamamos "server" a nuestro servidor para que podamos usarlo ajo ese nombre System.out.println("Binding has complete..."); System.out.println("Server is waiting for a client request..."); }catch(java.rmi.UnknownHostException uhe) { System.out.println("ERROR"); }catch(RemoteException re) { System.out.println("ERROR "+re); }catch(MalformedURLException mURLe) { System.out.println("ERROR "+ mURLe); } } public int registerClient(ClientRemote cr) throws RemoteException //aqui ya ponemos que hara la funcion que declaramos en al interface { int i =0; System.out.println("Client is requesting for a connection...."); v.addElement(cr); //agregamos al cliente en el vector i=v.indexOf(cr); System.out.println("Timer is started" +v.size()); return i; } public void removeClient(int i) throws RemoteException { v.removeElementAt(i);//quitamos al cliente del vector } public void showText(String str, String destino) throws RemoteException //envio de mensajes { String nn=""; for(int i=0; i<v.size();i++) { ClientRemote crl = (ClientRemote)v.elementAt(i);//instanciamos la interface del cliente if (crl!=null) //si no es nulo ese cliente o sea existe en el vector { if (crl.getName().equals(destino)) //comprabamos el destino { crl.getString(str); //mandamos el texto al cliente usando el metodo de la interfaz del cliente } } } } }
Eso es por ahora la interfaz del servidor y el servidor en si ya poniendo los métodos. Nos hace falta el cliente que sera la interfaz gráfica donde nosotros escribiremos y recibiremos mensajes y la interfaz del cliente para que el servidor pueda llamar remotamente métodos del cliente también.
Para compilar estos 2 archivos que son .java abrimos la consola y nos ubicamos en la carpeta donde los tengamos. Luego llamamos la funcion de compilacion de java:
javac *.java
Despues tenemos que hacer una compilacion especial para el Servidor en si. O sea el ChatServer:
rmic ChatServer
Bueno eso es todo por ahora muchachos, el proximo tutorial sera de interfaces y de policy tools. Despues seguire con esta serie de tutoriales.
Preguntas o sugerencias en el foro.
Saludos
LeX
about 1 month ago
Holaaaa, la tercera parte…la aplicacion del cliente??? la hiciste??
about 1 month ago
Lo siento, por falta de interes y poca gente viendo este blog, he decidido no continuarlo. Ahora mismo no tengo animos de seguirlo, tal vez mas adelante.
about 1 month ago
Hola..soy novato en RMIJava y estoy tratando de estudiar tu programa ClientRemote me marca como error porque?? ademas usaste en catch(java.rmi.UnknownHostException uhe) me podrias explicar q es este uhe?? disculpa las preguntas…ojala me puedas contestar…el proyecto esta muy bueno lastima q no lo terminaste tratare de seguirlo por mi cuenta ….muchas gracias..saludos
about 1 month ago
uhe es una variable de tipo java.rmi.UnknownHostException. UHE son las siglas de UnknownHostException.
Esta excepcion ocurre cuando hay algún problema y no se encuentra el host usando el Naming Lookup.
about 1 day ago
Esta interesante tus tutoriales sobre chat RMI.. seguro no llegues a leer este mensaje pero bueno hubiera sido bueno que termines con la aplicacion cliente del chat..
saludos