我有一个连接池,用于从 servlet 访问 MySQL 数据库。我使用在我的 META-INF/context.xml 文件中定义的 JNDI 获取数据源。
一切正常,但我必须将 MySQL 驱动程序 JAR 放在 Tomcat 的/common/lib 文件夹中,而不是 webapp 的 WEB-INF/lib 中;否则 JNDI 将无法工作(ClassNotFoundException:com.mysql.jdbc.Driver)。
有没有其他方法获取数据源,允许我将 JAR 放在 WEB-INF/lib 中?我在 Internet 上找到的所有示例都使用 JNDI...
(这是一个非常简单的应用程序,我真的不想为了解决我的问题而导入某个框架的 53 个 JAR :)
谢谢!
最佳答案
虽然大多数回复都是关于池的,但我认为这不是你的问题?
我认为对您的问题最直接的回答是,简单地导入并使用您的驱动程序提供的 DataSource 实现。您正在使用 MySQL Connector/J 吗?然后是MysqlDataSource .
上面有设置用户名、密码等的方法
如果你在JNDI中不需要它,那么你不必通过Tomcat在JNDI中配置它。当然,您可以将驱动程序 jar 保存在 WEB-INF/lib 中。如果你想围绕该数据源进行池化,确实,只需使用 Commons DBCP 和 Pool。
这是一个制作您自己的 pooling DataSource out of a given DataSource. 的示例
关于没有JNDI的Java连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577145/