Linderel.setBlog();

pasito a pasito...

Todo | Londres | Music | General | Java

Main | Next day (ene 5, 2005) »
20050104 Tuesday January 04, 2005

Ejecutar metodos desde un archivo Por motivos que no vienen al caso me tuve que enfrentar al siguiente problema. Tenia que crear un servlet que recibiera como parámetro el nombre de la classe del objeto que se quería crear y el nombre del método que se quería ejecutar. Así, se podía tener un servlet que fuera capaz de ejecutar cualquier acción sin necesidad de ser previamente conocida. Bueno, la cosa es bastante sencilla, aunque me llevó un ratito dar con la solución.

		
		Class[] classParam = null;
		Object[] objectParam = null;
		String name = "org.mypackage.test.ClassTest";
		String method = "run";
		try {
			Class cl = Class.forName(name);
			java.lang.reflect.Constructor co = cl.getConstructor(classParam);
			Method m = cl.getMethod(method ,classParam);
			m.invoke(co.newInstance(objectParam),classParam);
		} catch (SecurityException e) {
			System.out.println(e.getMessage());
		} catch (IllegalArgumentException e) {
			System.out.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
		} catch (NoSuchMethodException e) {
			System.out.println(e.getMessage());
		} catch (IllegalAccessException e) {
			System.out.println(e.getMessage());
		} catch (InvocationTargetException e) {
			System.out.println(e.getMessage());
		} catch (InstantiationException e) {
			System.out.println(e.getMessage());
		}
	
Este pedacito de código creará un objeto de tipo ClassTest y lanzará su metodo run. Si os preguntais para qué sirve algo así, pues a mi me sirve para definir la arquitectura de RainDrop. La idea es tener una librería core con toda la funcionalidad del dispatcher pero que permitar "enchufar" otras librerías. Por ejemplo, ahora puedo externalizar las acciones que se ejecutan en mi aplicacion web. (2005-01-04 12:21:20.0) Permalink Comentarios [4]


Las visitas de hoy a la página: 929