微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tomee Server Startup Error 数据库锁获取失败,即使应用程序中没有配置hsql

如何解决Tomee Server Startup Error 数据库锁获取失败,即使应用程序中没有配置hsql

我有一个在 tomee 容器上的 kubernates 集群上运行的应用程序。 应用程序运行良好,现在仍然运行良好,但出现以下异常:

INFO: Configuring Service(id=My Stateful Container,type=Container,provider-id=Default Stateful Container)
Feb 24,2021 11:00:12 AM org.apache.openejb.config.ConfigurationFactory configureService
INFO: Configuring Service(id=My Stateless Container,provider-id=Default Stateless Container)
Feb 24,2021 11:00:12 AM org.apache.openejb.config.DeploymentsResolver loadFrom
WARNING: File error: <Deployments dir="apps/"> - Does not exist: /opt/gemalto/lib/tomee/apps
Feb 24,2021 11:00:12 AM org.apache.openejb.util.OptionsLog info
INFO: Using 'openejb.deployments.classpath=false'
Feb 24,2021 11:00:12 AM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating TransactionManager(id=Default Transaction Manager)
Feb 24,2021 11:00:12 AM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating SecurityService(id=Tomcat Security Service)
Feb 24,2021 11:00:13 AM org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Resource(id=My DataSource)
Feb 24,2021 11:00:15 AM org.hsqldb.persist.Logger logSevereEvent
SEVERE: Could not reopen database

org.hsqldb.HsqlException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@324c044d[file =<Some path1>/tomee/data/hsqldb/hsqldb.lck,exists=false,locked=false,valid=false,] method: openRAF reason: java.io.FileNotFoundException: <Some path1>/tomee/data/hsqldb/hsqldb.lck (No such file or directory)
        at org.hsqldb.error.Error.error(UnkNown Source)
        at org.hsqldb.error.Error.error(UnkNown Source)
        at org.hsqldb.persist.LockFile.newLockFileLock(UnkNown Source)
        at org.hsqldb.persist.Logger.acquireLock(UnkNown Source)
        at org.hsqldb.persist.Logger.open(UnkNown Source)
        at org.hsqldb.Database.reopen(UnkNown Source)
        at org.hsqldb.Database.open(UnkNown Source)
        at org.hsqldb.DatabaseManager.getDatabase(UnkNown Source)
        at org.hsqldb.DatabaseManager.newSession(UnkNown Source)
        at org.hsqldb.jdbc.JDBCConnection.<init>(UnkNown Source)
        at org.hsqldb.jdbc.JDBCDriver.getConnection(UnkNown Source)
        at org.hsqldb.jdbc.JDBCDriver.connect(UnkNown Source)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:744)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:676)

现在非常有趣的部分是我提到的应用程序仍然运行良好。 改变的是: 现在应用程序配置了保险库代理以获取一些秘密并提供输入到文件以读取文件系统上的所有相关秘密。所有这些都工作正常。 但是上面的异常我无法解释为什么它会被引入系统......另外有趣的部分是源代码和 pom 文件没有变化。唯一可能影响的是 insde {{1} } 我们有一个密钥文件

现在由 Vault 创建,仅此而已。 请建议如何摆脱这个异常及其可能的原因。 也是 tomee 尝试连接 hsql db 并寻找这个锁文件的原因。

一个有趣的观察(对我来说很有趣,但对于专家来说,这可能是常规的东西)

在没有上述异常的常规启动中,catalina home 中的文件是:

CATALINA_HOME

似乎第一个 ls 输出中的增量文件正在生成,而其生成在基于异常的启动中被阻止。 可能是新引入的openejb.xml引起了麻烦,因为它有hsql db的定义。但是它是如何引入的,如何删除它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。