如何从我的 servlet 类访问放置在 /tmp 文件夹中的 sqlite db 文件?

Posted

技术标签:

【中文标题】如何从我的 servlet 类访问放置在 /tmp 文件夹中的 sqlite db 文件?【英文标题】:How to access my sqlite db file placed in /tmp folder from my servlet class? 【发布时间】:2014-01-28 11:44:48 【问题描述】:

我正在编写一个 JSP-Servlet 应用程序,我需要在其中写入和读取 sqlite 数据库。 数据库是临时数据库,我的 cron 作业之一将数据写入其中,而我的 servlet-jsp 应用程序读取这些数据并偶尔更新它

现在我正在尝试使用以下代码访问数据库

Class.forName("org.sqlite.JDBC");
Connection connection = DriverManager.getConnection("jdbc:sqlite:/tmp/test.db");

我在上面一行收到以下错误

java.lang.UnsatisfiedLinkError: org.sqlite.NativeDB._open(Ljava/lang/String;I)V
    org.sqlite.NativeDB._open(Native Method)
    org.sqlite.DB.open(DB.java:157)
    org.sqlite.Conn.open(Conn.java:170)
    org.sqlite.Conn.<init>(Conn.java:87)
    org.sqlite.JDBC.createConnection(JDBC.java:113)
    org.sqlite.JDBC.connect(JDBC.java:87)
    java.sql.DriverManager.getConnection(DriverManager.java:571)
    java.sql.DriverManager.getConnection(DriverManager.java:233)
    com.cricket.qa.web.Tickets.doGet(Tickets.java:36)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    amazon.actiontrace.generation.servlet.StorageBindingFilter.doFilter(StorageBindingFilter.java:36)
    com.amazon.spnego.http.InitiateAction.run(HttpAuthFilter.java:215)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAs(Subject.java:415)
    com.amazon.spnego.http.HttpAuthFilter.executeFilterWithCreds(HttpAuthFilter.java:173)
    com.amazon.spnego.http.HttpAuthFilter.doFilter(HttpAuthFilter.java:74)
    com.amazon.build.brazil.filters.FQDNFilter.doFilter(FQDNFilter.java:170)

【问题讨论】:

【参考方案1】:

好的,我用 apache derby 解决了一个类似的要求,你可以使用这个:

String path = this.getServletContext().getRealPath("tmp/test.db");
Class.forName("org.sqlite.JDBC");
Connection connection = DriverManager.getConnection("jdbc:sqlite:"+path);

【讨论】:

没有解决我的问题,但答案被接受,因为它是执行上述操作的正确方法。我得到的错误是由于 sqlite 版本。我降级了版本,它工作正常。

以上是关于如何从我的 servlet 类访问放置在 /tmp 文件夹中的 sqlite db 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的项目访问我的MongoDB实例到我的xunit测试项目类?

从我的应用程序中查找finder中的放置位置

web.xml中url-pattern有啥意义,servlet如何配置?

Delphi如何访问父窗体

不知道如何在 iOS 上从我的应用委托访问视图对象

Servlet学习1