JavaサーブレットでSQLiteを使う場合のパス指定方法
通常のJavaアプリでSQLiteは使ったことがあったけど、サーブレットだとパス指定に戸惑ったのでメモ。
JavaサーブレットだとカレントディレクトリがEclipseと本番環境で違ったりするので、以下のように書くと手軽。
Windows, Tomcat7で動作確認。
Class.forName("org.sqlite.JDBC");
database_path = getServletContext().getRealPath("WEB-INF/database.db")
DriverManager.getConnection("jdbc:sqlite:" + database_path);
サーブレットコンテキストベースの相対パスから絶対パスを求めるので、コンテキスト名やローカルの絶対パスなども考えなくて済む。
WEB-INF以下に置けば、http経由ではアクセスできないので安心。