私はいくつかの他のJavaプロセスを起動するJavaプロセスを持っています。サービスは、私が継続的に実行されてROCServerEntrypoint
を必要とする継続的に実行するためにはJavaプロセスを継続的に実行するためのSpring機能
public class ROCServerEntrypoint {
public static void main(String[] args) {
AnnotationConfigApplicationContext annContext = new AnnotationConfigApplicationContext();
BeanConfigRegisterUtil.util.registerBeanConfig(annContext);
ServiceInitUtil.util.initServerServices(annContext);
}
}
public class ServiceInitUtil {
public static ServiceInitUtil util = new ServiceInitUtil();
private AnnotationConfigApplicationContext context;
private Logger logger = LoggerFactory.getLogger(ServiceInitUtil.class);
public void initServerServices(AnnotationConfigApplicationContext context) {
this.context = context;
context.refresh();
startServices(new ArrayList<Service>(fetchRegisteredServices()));
}
private Collection<Service> fetchRegisteredServices() {
return context.getBeansOfType(Service.class).values();
}
private void startServices(List<Service> registeredServices) {
Collections.sort(registeredServices, new ServiceOrderComparator());
logger.info(">Initiating services...");
for (Service service : registeredServices) {
logger.info(">Starting service - " + service.getClass().getSimpleName());
if (!service.start()) {
logger.info(">Failed to start service - " + service.getClass().getSimpleName());
logger.info(">Initiating shutdown...");
shutDown(service, registeredServices);
break;
} else {
logger.info(">Successfully started service - " + service.getClass().getSimpleName());
}
}
}
private void shutDown(Service failedService, List<Service> registeredServices) {
for (Service service : registeredServices) {
if (!service.equals(failedService)) {
logger.info(">Shutting down service - " + service.getClass().getSimpleName());
service.shutDown();
} else {
break;
}
}
}
。 これらの2つのアプローチを試してみました。
- ROCServerEntrypointをスレッドとして開始します。
- もっと無神経で、無限ループを実行します。
また、Springにこれに対応するクリーナーソリューションがあるかどうか疑問に思うかもしれません。
スプリングブートを使用しますか? – chrylis
はいスプリングブーツを使用しています。しかし、どのように正確に見つけることができませんでした。デフォルトでは、プロセスは終了します。 –
HTTPやMQエンドポイントなどの長期実行サービスはありませんか?これらのサービスは外部とどのように通信していますか? – chrylis