Galera eu tenho que executar em uma máquina vários arquivos jars de forma concorrente.
Tem como eu fazer um programa que chame a execução desses jars para que eu não precise ficar incializando todos eles manualmente e conferindo se algum deles parou de funcionar?
Criando um aplicativo baseado em threads.
Cada thread dispara um jar e, dorme.
Quando acordar, verifica se está rodando normalmente.
Olá
Como nosso amigo drsmachado citou,
Voce pode usar o ClassLoader do java para carregar os seus jars em tempo de execução.
Olhe o exemplo a baixo:
mainJarTest.jar
public class Main {
public static void main(String[] args) {
File file = new File("runtimeJarTest.jar");
URI uriJars = file.toURI();
URL[] urlJarsCarrega;
try {
urlJars = new URL[] {uriJars.toURL()};
ClassLoader loader = new URLClassLoader(urlJarsCarrega);
loader.loadClass("br.com.OlaMundo").newInstance();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
runtimeJarTest.jar
package br.com;
public class OlaMundo {
public OlaMundo() {
System.out.println("Olá Mundo!");
}
}
Voce pode chamar threads para carregar diferentes Jars.
Dei uma mudado no exemplo dessa thread e deu certo: