【发布时间】:2015-05-30 18:06:30
【问题描述】:
我有一个嵌入式 H2 数据库,我想将其放入 Web 应用程序的 WEB-INF 目录中。
在 JDBC url 中引用它的正确方法是什么?
理想情况下,我想要一个既适用于 WAR,又适用于扩展 WAR(如果可能)的解决方案。
感谢您的帮助!
仅供参考,我尝试了以下方法:
jdbc:h2:/WEB-INF/data/myDB;CIPHER=AES
但这会导致:
org.h2.jdbc.JdbcSQLException: A file path that is implicitly relative to the current working directory is not allowed in the database URL "jdbc:h2:/WEB-INF/data/myDB;CIPHER=AES". Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-187]
将其更改为: jdbc:h2:./WEB-INF/data/myDB;CIPHER=AES
导致以下错误,这清楚地表明它试图将我的数据库放在 Tomcat 的 bin 目录中,而不是我想要的真正的 WEB-INF 目录中:
org.h2.jdbc.JdbcSQLException: Error while creating file "C:/Program Files/Apache Software Foundation/Tomcat 7.0/bin/WEB-INF" [90062-187]
【问题讨论】:
-
根据您需要支持的应用程序服务器,您应该小心将文件放入 webinf。 Websphere 在这方面非常挑剔。你写入数据库还是只读的?最好允许将数据库存储在单独的目录中并允许配置路径
-
它是只读的,只能部署在Tomcat上,最好是WAR格式。
-
程序文件不允许写入,换个路径试试
-
我知道我不允许在 Program Files 中写入。 WEB-INF 目录也不在 Tomcat 的 bin 目录下。我显示错误的重点是相对路径没有达到预期的效果。
-
如果你的例子符合现实不会有什么坏处;-)