0

我正在编写一个 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.

4

1 回答 1

0

如果您要做的只是启动一个 CDI 容器,以便您的应用程序可以由 CDI 管理,那么您可能只使用SeContainerInitializer,这只是普通的 CDI。您可以在有或没有 Helidon 的情况下执行此操作。

如果您想使用 Helidon JPA/JTA 功能,它们会通过普通的 CDI 可移植扩展机制公开,因此只需将它们放在您的类路径中。

于 2021-09-22T20:54:44.013 回答