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



Liquibase安装附带一个示例目录,您可以使用该目录了解不同的命令。示例使用H2数据库,该数据库在端口9090上具有web控制台。很遗憾,端口9090不可用。

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

  • start-h2

端口似乎由Liquibaseliquibase.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

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

  1. 完全可以构建StartH2Main
  2. dbPort常数从9090更改为">可用",如8092
  • StartH2Main应用程序加载H2并对.h2.server.properties文件进行侧步操作
  1. 为自己构建一个StartH2Main.jar
  • 9090是为StartH2Main硬编码的
  • 端口9090是数据库端口,这意味着必须更新所有示例以匹配给定的新端口号

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

最新更新