Un diminuto servidor de aplicaciones desarrollado en Java
3 mayo, 2008
Este es un código que embute las aplicaciones Java que se deseen dentro de una hebra gestionada por la misma máquina virtual. La resolución de nombres de clases se ha de implementar con un cargador de clases virtual para cada hebra y se debe añadir una biblioteca (que publicaré pronto) de gestión de hebras para resolver el conflicto entre las mismas.
import java.lang.* ; import java.lang.reflect.Method; public class Servidor { public static void main(String []args) { System.out.println("Iniciando la clase Servidor \n"); iniciarEnHebra("Aplicacion1",args); iniciarEnHebra("Aplicacion2",args); } public static Proceso iniciarEnHebra(String nombreClase, String[] args) { Proceso proceso = new Proceso(nombreClase, args); //**************** Nuevo: ********************** ThreadGroup grupo = new ThreadGroup("main"); Thread hebra = new Thread(grupo, proceso); //**************** Nuevo: ********************** hebra.start(); return proceso; } } class Proceso implements Runnable{ String nombreClase; String[] Argumentos; //**************** Nuevo: ********************** ThreadGroup hebraEnCurso; //**************** Nuevo: ********************** public Proceso (String nombre, String[] args) { nombreClase = nombre; Argumentos = args; } public static void iniciarOtraClase(String nombreClase, String[] args) throws Exception { //Obtener la clase Class objeto = Class.forName(nombreClase); //Localizar el metodo main(String []) de esa clase Class[] tipoParametrosMain = {args.getClass()}; Method main = objeto.getMethod("main", tipoParametrosMain); //array con los argumentos a pasarle a la clase Object[] parametrosMain = {args}; //Iniciar la clase main.invoke(null, parametrosMain); } public void run() { //**************** Nuevo: ********************** hebraEnCurso=Thread.currentThread().getThreadGroup(); //**************** Nuevo: ********************** try{ iniciarOtraClase(nombreClase, Argumentos); }catch(Exception e){ System.out.println(" Excepcion ... "); e.printStackTrace(); } } public void terminar() { if(hebraEnCurso != null) hebraEnCurso.stop(); } }Las aplicaciones de prueba que se pueden usar son :
//Aplicacion1 import java.lang.*; public class Aplicacion1 { public static void main(String[]arrs) { System.out.println("Este bucle es de la aplicacion 1"); for (int i = 0;i<10000;i++){ System.out.println("Aplicacion 1"); } System.out.println("Final de la aplicacion 1"); } } [/sourcecode] [sourcecode language='csharp'] //Aplicacion2 import java.lang.*; public class Aplicacion2 { public static void main(String[]arrs) { System.out.println("Este bucle es de la aplicacion 2"); for (int i = 0;i<10000;i++){ System.out.println("Aplicacion 2"); } System.out.println("Final de la aplicacion 2"); } } [/sourcecode]
3 comentarios
leave one →
Veo que le has dado buen uso al metatag de wordpress para publicar código fuente 🙂
Hale, a disfrutarlo con salud, y felicidades por el artículo en MundoLinux!
Hola, muy interesante el artículo…bueno…yo soy nuevo en esto…y de verdad me gustaria saber si pudieras decir la forma en que le haces para publicar el código de esa manera, para que se resalten palabras reservadas o cosas asi.
Saludos!!!
Tal y como me indicó «Antonius» se puede colocar el código de la siguiente forma :
Usa las metatags
sourcecode language=’csharp’ (este texto tienes que ponerlo entre [] )
todo el codigo que quieras
/sourcecode (este texto tienes que ponerlo entre [] )