Я только что прошел настройку sqlite3 с Tomcat 7. Теперь все работает, так что я решил поделиться своими настройками.
- Загрузите драйвер JDBC (org.sqlite.JDBC), который находится в sqlite-jdbc-3.7.2.jar (или любой другой последней версии).https://bitbucket.org/xerial/sqlite-jdbc/downloads
и скопируйте его в ваш Tomcat / lib- Вы можете скопировать базу данных sqlite куда угодно.Для моей установки я создал каталог 'dbs' под моей установкой tomcat и поместил его туда.
Теперь настройте свое приложение.Если у вас нет файла META-INF / context.xml, создайте его.Это минимальный файл:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/yourdb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.sqlite.JDBC"
url="jdbc:sqlite:/${catalina.home}/dbs/yourDB.db"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory">
</Resource>
</Context>
Затем добавьте в файл WEB-INF / web.xml следующее:
<resource-ref>
<description>Reviews Database</description>
<res-ref-name>jdbc/yourdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
На этом этапе вам будет хорошо идти.Вот пример кода для доступа к базе данных (у меня есть таблица «admin» со столбцом «username»):
public String getName() {
LOG.info("getting name : " + this.name);
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/yourdb");
Connection conn = ds.getConnection();
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select username from admin");
this.name = rs.getString(1);
} catch (SQLException se) {
LOG.info(se.toString());
} catch (NamingException ne) {
LOG.info(ne.toString());
}
return this.name;
}
Примечание: некоторые дистрибутивы tomcat по умолчанию не поставляются с tomcat.dbcp, если вы столкнетесь с проблемами, может быть проще сослаться на класс dbcp, который поставляется с общими, org.apache.commons.dbcp.BasicDataSourceFactory.У меня была эта проблема с tomcat.dbcp, не включенным в мою установку tomcat7, и как только я переключил ссылку в context.xml, все работало нормально.