如何更改Liquibase示例指定的H2数据库控制台端口号?

问题描述 投票:0回答:2

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

我问如何更改由脚本启动的示例

H2
数据库使用的网络控制台端口:

  • 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
文件设置或命令行选项可以更改要使用的网络控制台端口号
H2

port h2 liquibase
2个回答
0
投票

我已经回答了我自己的问题,以 @RobbyCornelissen 的建议为指导,并进行了以下更新。

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

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


0
投票

我也遇到了同样的问题,我通过在执行启动H2DB命令时指定端口号来解决它:

liquibase init start-h2 --web-port <your_desired_port>

替换为您要使用的端口。

我知道这个问题大约三年前就被问到了,但我希望它能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.