我使用的HSQLDB为我的基于Spring的Java Web应用程序。 我把数据库文件(mydb.lck,mydb.properties,..)将src \主\ java的\ data文件夹,使他们发布到WEB-INF \类\数据。
在数据源配置,我指定JVM工作目录此相对路径。 作为引导下HSQLDB文档。
portal.jdbc.url=jdbc:hsqldb:file:/data/mydb
(适用于Windows此分隔符吧?)
但春天似乎找不到这条道路,并坚持声称
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: CUSTOMER org.hsqldb.jdbc.Util.sqlException(Unknown Source)
不过,如果我指定一个绝对路径,它完美的作品
portal.jdbc.url=jdbc:hsqldb:file:d:\\TomcatServer\\apache-tomcat-7.0.10\\wtpwebapps\\myportal-app\\data\\mydb
如果我错过了解JVM的工作目录上的Web应用程序? 任何帮助表示赞赏。
看来,Tomcat不为我们提供变量(如“根目录”)是指我的应用程序上下文中的属性。 所以我的解决方案是在注册servlet上下文监听器这样的特性。
我的代码:
public class WebAppPropertiesListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
String rootPath = sce.getServletContext().getRealPath("/");
System.setProperty("webroot", rootPath);
}
...
}
而在web.xml中添加监听器被触发Spring上下文之前
<listener>
<listener-class>com.iportal.util.WebAppPropertiesListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
然后我把财产HSQLDB设置。
portal.jdbc.url=jdbc:hsqldb:file:${webroot}WEB-INF/classes/data/mydb
希望这有助于人谁可能会遇到同样的问题。
HSQLDB 2.2.8及更高版本允许在连接URL中的变量。 该变量可以是任何系统属性,例如web应用目录路径。
http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_variables_url
请参阅章节“变量在连接URL”
http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html
例
JDBC:HSQLDB:文件:$ {mydbpath}; sql.enforce_types =真
想通了Tomcat上8感谢fredt
URL = “JDBC:HSQLDB:文件:” + mydbpath;
凡mydbpath是realtive路径指定的数据库的变量。 这莫名其妙的作品