2014-01-09 6 views
4

Я пишу приложение JSP-сервлета, где мне нужно писать и читать из sqlite db. БД является временным, к которому один из моих хрон рабочих мест записать данные и мой сервлет-JSP приложение считывает Thise данные и время от времени обновляет егоКак получить доступ к моему файлу sqlite db, помещенному в папку/tmp из моего класса сервлета?

Теперь я пытаюсь получить доступ к БД, используя следующий код

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) 

ответ

3

Ok я решил аналогичное требование с Apache Derby вы могли бы использовать это:

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

Не решил мою проблему, но ответ принят, поскольку это правильный способ сделать это. Ошибка, которую я получал, была из-за версии sqlite. Я понизил версию, и она работает нормально. – expressions