You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Vert.x应用部署异常及Hibernate集成问题求助

Vert.x集成Hibernate遇到的两类问题及代码示例

我正在学习Java Vert.x,在部署Verticle应用并集成Hibernate时遇到两个问题:

  • 基于main类的实现:程序仅输出一次结果后Vertx就终止运行
  • 基于MainVerticle的实现:无法正常启动,出现EventLoop线程阻塞警告,日志如下:

Jul 09, 2023 6:51:50 PM org.hibernate.reactive.pool.impl.DefaultSqlClientPoolConfiguration poolOptions INFO: HR000025: Connection pool size: 10
Jul 09, 2023 6:51:51 PM io.vertx.core.impl.BlockedThreadChecker WARNING: Thread Thread[vert.x-eventloop-thread-2,5,main] has been blocked for 2355 ms, time limit is 2000 ms
Jul 09, 2023 6:51:52 PM io.vertx.core.impl.BlockedThreadChecker WARNING: Thread Thread[vert.x-eventloop-thread-2,5,main] has been blocked for 3355 ms, time limit is 2000 ms


1. main类实现代码

public static void main(String[] args) {
    Stage.SessionFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName(args))
      .unwrap(Stage.SessionFactory.class);
    // 项目仓库
    BookingRepository projectRepository = new BookingRepositoryImp(emf);

    // 项目服务
    BookingService projectService = new BookingServiceImp(projectRepository);
    BookingHandler bookingHandler = new BookingHandler(projectService);

    // Web Verticle
    BookingRouter verticle = new BookingRouter(bookingHandler);
    Vertx vertx = Vertx.vertx();
    vertx.deployVerticle(verticle, options)
      .onFailure(err -> err.printStackTrace())
     .onSuccess(res -> {
       System.out.println(res);
       System.out.println("Application is up and running");
      });
}

public static String persistenceUnitName(String[] args) {
    return args.length > 0 ? args[0] : "postgresql-example";
}

2. MainVerticle实现代码

public void start(Promise<Void> promise) { 
    Stage.SessionFactory emf = Persistence.createEntityManagerFactory("postgresql-example") 
        .unwrap(Stage.SessionFactory.class); 
    // 项目仓库
    BookingRepository projectRepository = new BookingRepositoryImp(emf);

    // 项目服务
    BookingService projectService = new BookingServiceImp(projectRepository);
    BookingHandler bookingHandler = new BookingHandler(projectService);

    // Web Verticle
    BookingRouter bookingRouter = new BookingRouter(bookingHandler, vertx);

    final Router router = Router.router(vertx);
    bookingRouter.setRouter(router);

    buildHttpServer(vertx, promise, router);
}

private void buildHttpServer(Vertx vertx, Promise<Void> promise, Router router) { 
    vertx.createHttpServer() 
        .requestHandler(router) 
        .listen(8888, http -> { 
            if (http.succeeded()) { 
                promise.complete(); 
                LOGGER.info("running on port : "+8888); 
            } else { 
                promise.fail(http.cause()); 
                LOGGER.info(http.cause()); 
            } 
        }); 
}

public static String persistenceUnitName(String[] args) { 
    return args.length > 0 ? args[0] : "postgresql-example"; 
}

内容的提问来源于stack exchange,提问作者abdullah Almasri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:40:19