【问题标题】:Where can I tell Tomcat where data of a deployed application are to be stored? [duplicate]我在哪里可以告诉 Tomcat 已部署应用程序的数据将存储在哪里? [复制]
【发布时间】:2019-05-04 03:50:18
【问题描述】:

我尝试在 Tomcat 上部署应用程序。该应用程序使用数据库。但是Tomcat无法存储,因为他尝试存储在服务器的根目录下,当然他没有权限,日志说:

Error opening database: "Could not save properties /sudoDb.lock.db" [8000-176] 

如何将 Tomcat 配置为存储在允许的任何地方,例如。 TOMCAT_HOME 或其他任何地方。

感谢任何提示

【问题讨论】:

  • 请提供有关您使用的框架、配置和源代码的详细信息,并至少提供完整的异常 StackTrace。
  • 它是一个 grails 应用程序,我只能配置 url = "jdbc:h2:sudoDb;...." 我已经将该应用程序部署在另一个 tomcat 上,其中 tomcat 将数据库存储在 TOMCAT_HOME/bin一切正常。我重复我的问题:我可以告诉tomcat,在哪里存储数据库。如果没有stacktrace和配置信息就无法回答这样一个简单的问题,我必须假设tomcat存储的数据库是随机的。
  • Apache Tomcat 不是 DBMS。它是一个 servlet 容器,因此它根本不存储数据库。这意味着您必须使用第三方模块。堆栈跟踪很容易揭示您正在使用哪个模块以及哪里出了问题。但幸运的是,您提到了url = "jdbc:h2:sudoDb;....",这表明您正在使用能够存储数据库的未知版本的 H2 JDBC 驱动程序。这可能会有所帮助:h2database.com/html/faq.html#database_files
  • 感谢您的回答,试过了,效果很好

标签: tomcat h2


【解决方案1】:

由于我的 webApp 基于 grails 和 h2,因此在 config.DataSource 中定义数据库位置对我有用。我简单地定义了:

url = "jdbc:h2:file:/vol/h2/sudoDb.... 

并且数据库由tomcat存储在我的目标linux的/vol/h2中。这确实不是一个独立于操作系统的解决方案,因为它只适用于在 linux 上运行的 tomcat。对于 Windows,仍然需要使用另一个 url='...' 重新编译。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2017-01-11
    • 2011-02-15
    相关资源
    最近更新 更多