Estoy escribiendo un programa de servidor que se utiliza para ejecutar pruebas unitarias de una API (que muestra una gran cantidad de información y proporcionar acceso a la web para controlar /monitorear toda la cosa) ...¿Puedo descargar y volver a cargar dinámicamente (otras versiones del mismo) JAR?
Esta API es conocido por el servidor durante el tiempo de compilación y se proporciona como un JAR.
Para poder comparar entre los resultados de los exámenes de unidad de versiones diferentes de la API (sin necesidad de reiniciar el servidor), Quiero ser capaz de descargar la versión 'actual' de la API, y para recargar uno más nuevo (o uno más antiguo).
no quiero utilizar URLClassLoader e invocar cada método por su nombre
(usando getDeclaredMethod("someMethod")
),
porque el servidor depende en gran medida de la API y sería complicado para 'envoltura' cada método de llamada de esa manera sucia.
que estaba pensando: Dado que todas las interfaces de todos los versiones del JAR son misma, podría no lo hago por una recarga de alguna manera otra versión del JAR (sin ese nombre, por invocación-?)
Nota: Estoy utilizando la última versión de Java SE (6) y Java EE (5).
Si cree que lo que intento lograr no es posible, sugiera una "solución" o un concepto diferente.
Véase también: http://stackoverflow.com/questions/148681/unloading-classes-in-java – sleske