【问题标题】:how to change the H2 database console port number specified by Liquibase example?如何更改 Liquibase 示例指定的 H2 数据库控制台端口号?
【发布时间】:2021-10-21 16:33:01
【问题描述】:

Liquibase 安装附带一个示例目录,您可以使用它来了解不同的命令。这些示例使用 H2 数据库和端口 9090 上的 Web 控制台。不幸的是,端口 9090 不可用。

我在问如何更改脚本启动的示例 H2 数据库使用的 web-conole 端口:

  • start-h2

端口似乎是由 Liquibase liquibase.example.StartH2Main 模块本身指定的。 H2 似乎不受以下更改的影响:$HOME/.h2.server.properties ...

java -cp h2-1.4.200.jar:liquibase.jar liquibase.example.StartH2Main
Starting Example H2 Database...
NOTE: The database does not persist data, so stopping and restarting this process will reset it back to a blank database

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at liquibase.example.StartH2Main.startTcpServer(StartH2Main.java:74)
    at liquibase.example.StartH2Main.main(StartH2Main.java:28)
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Exception opening port "9090" (port may be in use), cause: "java.net.BindException: Address already in use" [90061-200]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:180)
    at org.h2.util.NetUtils.createServerSocket(NetUtils.java:146)
    at org.h2.server.TcpServer.start(TcpServer.java:245)
    at org.h2.tools.Server.start(Server.java:511)

我希望有一个 .properties 文件设置或命令行选项可以更改要使用的 Web 控制台端口号 H2

【问题讨论】:

  • 看起来是硬编码的:github.com/liquibase/liquibase/blob/master/liquibase-core/src/… 不过应该足够简单来编辑示例。
  • @RobbyCornelissen ...谢谢你,我正要开始寻找示例源代码。我希望我可以独立于liquibase.jar 运行H2,或者至少在类路径上使用liquibase.jar。至少在我重建某些东西之前。
  • 只需要复制粘贴编辑该单个示例类。这是一个示例,它不是库的一部分。

标签: port h2 liquibase


【解决方案1】:

我已根据@RobbyCornelissen 的建议回答了我自己的问题,并提供了以下更新。

  1. 完全可以构建StartH2Main类。
  2. dbPort 常量从 9090 更改为“可用”,例如 8092。
  • StartH2Main 应用程序加载 H2 并绕过 .h2.server.properties 文件。
  1. 为自己建立一个StartH2Main.jar
  • 9090 硬编码为StartH2Main
  • 端口9090 是数据库端口,这意味着必须更新所有示例以匹配给定的新端口号。

我个人觉得任何东西,比如用于演示或教程的端口都应该是我可以放在命令行或配置文件中的东西。因此,避免了耗时或不便的采用障碍。这很有意义。这样的东西总是可以有一个默认值,请允许它们也被配置。

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2020-04-12
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多