我正在编写一个Java命令行应用程序,该应用程序打算从数据库中读取和写入数据,并在完成工作后完成执行。
它永远不会向任何人公开REST接口,也不需要启动服务器并侦听任何端口。
所以这个应用程序是这样的:
public class Main {
public static void main(final String[] args) {
// Start Helidon CDI, JTA, etc. - but not JAX-RS
// No: Server.create().start();
// No: io.helidon.microprofile.cdi.Main.main(args);
// Do work
MyApp myApp = CDI.current().select(MyApp.class).get();
app.run();
// Shutdown
io.helidon.microprofile.cdi.Main.shutdown();
}
}但是,无论我如何初始化Helidon框架,都会启动一个web服务器,并开始侦听端口8080 (或其他端口)。即使使用Helidon的Main.main(...)方法启动web服务器。
那么,我如何启动/初始化Helidon,以便与带有CDI、JTA、JPA但没有web服务器的命令行应用程序一起使用?
就Spring Boot而言,我想我请求的是Helidon版的CommandLineRunner。
发布于 2021-09-22 20:54:44
如果您只想启动一个CDI容器,以便您的应用程序可以由CDI管理,那么您可能只需要使用SeContainerInitializer,它只是一个普通的CDI。您可以在使用或不使用Helidon的情况下执行此操作。
如果您想使用Helidon JPA/JTA特性,它们是通过普通的CDI可移植扩展机制公开的,所以只需将它们放在类路径中即可。
https://stackoverflow.com/questions/69284639
复制相似问题