Java 如何在Tomcat6中配置SQLite?
您能否提供如何在Tomcat6中使用sqlite的步骤?我使用的是Xerial sqlite jdbc驱动程序。在我的应用程序中,我有多个sqlite数据库(.db文件),需要连接到不同的sqlite数据库,具体取决于用户登录的是什么?我可以把所有的.db文件放在哪里?在webapp根目录中,或者系统上的任何地方,或者在WEB-INF中 谢谢Java 如何在Tomcat6中配置SQLite?,java,sqlite,tomcat,jdbc,Java,Sqlite,Tomcat,Jdbc,您能否提供如何在Tomcat6中使用sqlite的步骤?我使用的是Xerial sqlite jdbc驱动程序。在我的应用程序中,我有多个sqlite数据库(.db文件),需要连接到不同的sqlite数据库,具体取决于用户登录的是什么?我可以把所有的.db文件放在哪里?在webapp根目录中,或者系统上的任何地方,或者在WEB-INF中 谢谢 深我们所做的非常相似。不幸的是,您无法在Tomcat上创建SQLite连接池,因为SQLite为每个用户都有一个数据库文件 只需将jar文件复制到TOMC
深我们所做的非常相似。不幸的是,您无法在Tomcat上创建SQLite连接池,因为SQLite为每个用户都有一个数据库文件 只需将jar文件复制到
TOMCAT_HOME/lib
文件夹中,但不能通过JNDI调用连接。
您必须执行以下操作:
/**
*
* @param driverClassName
* @param url
* @param user
* @param password
* @throws SQLException
* @throws Exception
*/
public DefaultJdbcTransaction(String driverClassName, String url, String user, String password) throws SQLException {
super();
// TODO Auto-generated constructor stub
try {
Class.forName(driverClassName).newInstance();
if (user == null && password == null) {
connection = DriverManager.getConnection(url);
} else {
connection = DriverManager.getConnection(url, user, password);
}
} catch (InstantiationException e) {
// TODO Auto-generated catch block
throw new SQLException(e);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
throw new SQLException(e);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
throw new SQLException(e);
}
}
其中url=“jdbc:sqlite:/path/to/sqlite/file/userId.db”
,driverClassName=“org.sqlite.jdbc”
,和(user=password=null
)
我使用的是sqlitejdbc-v056.jar
希望这有帮助我刚刚用Tomcat 7配置了sqlite3。现在一切正常,所以我想分享一下我的设置
-下载位于sqlite-JDBC-3.7.2.jar(或任何最新版本)中的JDBC驱动程序(org.sqlite.JDBC)
并将其复制到Tomcat/lib
-您可以将sqlite db复制到任何需要的地方。对于我的设置,我在tomcat安装下创建了一个“dbs”目录,并将其放在那里
现在设置你的应用程序。如果没有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>
注意:tomcat的某些发行版默认情况下不附带tomcat.dbcp,如果遇到问题,可以更容易地引用commons附带的dbcp类org.apache.commons.dbcp.BasicDataSourceFactory。我的tomcat7安装中没有包含tomcat.dbcp,我遇到了这个问题,一旦我在context.xml中切换了引用,一切都正常工作 谢谢你的及时回复。如果我不能使用Tomcat提供的连接池,那么多个用户是否可以连接到同一个.db文件,或者我是否需要实现某种基本的连接池,因为多个用户可能会在同一时间连接到同一个db?如果多个用户将连接到同一个db文件,则连接池是可能的,你在浪费时间。只为获取信息:关于tomcat 8=>factory=“org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory”
<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>
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;
}