没有JNDI的Java连接池?

标签 java datasource connection-pooling jndi

我有一个连接池,用于从 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/

相关文章:

java - "cannot validate component with empty value"HtmlInputText 组件不为空时发出警告

android - 分页库使数据源无效

java - 为什么我可以为我的 Spring 项目运行 JUnit 测试,而不是 main 方法?

java - 我可以设置连接池中的 JDBC 连接的密码吗? ( Tomcat 5.5.17)

java - 使用 Java 和 MySQL 获取 PacketTooBig 异常

java - “找不到或加载主类”是什么意思?

java - 当方法之间的差异是参数子类型时,将 null 传递给重写的方法

tomcat - 将数据库连接从 WAS 迁移到 TOMCAT 7

java - hibernate 5 : db connections are still not released (idle in transaction) after lazy loading

c# - 为什么将我们的 .NET/SQL Server 网站移动到新主机会导致超过连接池大小?