在Web应用HSQLDB文件的相对路径不起作用?(Relative path to hsqldb f

2019-09-18 23:18发布

我使用的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应用程序? 任何帮助表示赞赏。

Answer 1:

看来,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

希望这有助于人谁可能会遇到同样的问题。



Answer 2:

HSQLDB 2.2.8及更高版本允许在连接URL中的变量。 该变量可以是任何系统属性,例如web应用目录路径。

http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_variables_url



Answer 3:

请参阅章节“变量在连接URL”

http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html

JDBC:HSQLDB:文件:$ {mydbpath}; sql.enforce_types =真



Answer 4:

想通了Tomcat上8感谢fredt

URL = “JDBC:HSQLDB:文件:” + mydbpath;

凡mydbpath是realtive路径指定的数据库的变量。 这莫名其妙的作品



文章来源: Relative path to hsqldb files in a web app doesn't work?