【问题标题】:Java connection pool without JNDI?没有JNDI的Java连接池?
【发布时间】:2009-10-16 09:47:09
【问题描述】:

我有一个连接池,可以从 servlet 访问 MySQL 数据库。我使用 JNDI 获取数据源,该 JNDI 在我的 META-INF/context.xml 文件中定义。

一切正常,但我必须将 MySQL 驱动程序 JAR 放在 Tomcat 的 /common/lib 文件夹中,而不是 webapp 的 WEB-INF/lib;否则 JNDI 将无法工作(ClassNotFoundException: com.mysql.jdbc.Driver)。

有没有其他方法来获取数据源,它允许我将 JAR 放在 WEB-INF/lib 中?我在 Internet 上找到的所有示例都使用 JNDI...

(这是一个非常简单的应用程序,我真的不想为了解决我的问题而不必导入某些框架的 53 个 JAR :)

谢谢!

【问题讨论】:

    标签: java datasource connection-pooling jndi


    【解决方案1】:

    虽然这些回复中的大多数都是关于池的,但我认为这不是你的问题?

    我认为对您的问题最直接的回答是,只需导入并使用您的驱动程序提供的 DataSource 实现即可。您正在使用 MySQL 连接器/J?然后是MysqlDataSource

    上面有设置用户名、密码等方法

    如果您在 JNDI 中不需要它,那么您不必通过 Tomcat 在 JNDI 中配置它。当然,您可以将驱动程序 jar 保存在 WEB-INF/lib 中。实际上,如果您想围绕该数据源进行池化,只需使用 Commons DBCP 和 Pool。

    这是一个制作自己的示例pooling DataSource out of a given DataSource.

    【讨论】:

      【解决方案2】:

      您可以尝试 sun 已经建议的方法: Connection Pooling

      【讨论】:

        【解决方案3】:

        如果你不想使用 JNDI,那么你就不能使用 Tomcat 的连接池机制,你需要在你的应用程序中加入一个,这意味着在你的 WAR 文件中添加第三方库。二者择其一,任君选择。

        如果你决定走 3rd-party 路线,我建议使用Apache Commons DBCP(这反过来又需要Apache Commons Pool)。

        【讨论】:

          【解决方案4】:

          简单的应用越来越多。框架最初可能看起来有点矫枉过正,但你很快就会发现你正在重新发明轮子并发展自己的框架。

          考虑追随你的人......他们上网查找一种技术,发现它常用,然后回到你的代码,瞧!你用不同的方式做的。

          Java EE 框架代码、JDBC 驱动程序,一切都应该在您的服务器环境中,无需将其包含到您的应用程序中。所以开销应该很小。随着您开发更多应用程序,这种方法确实会带来回报。

          咬紧牙关,为未解决的问题保留创造力。

          【讨论】:

            【解决方案5】:

            我绝对同意您的观点,即数据源应远离 context.xml。如果您想外部化您的配置,您将不得不这样做。我们不久前经历了这个过程。这很容易。我不能给你代码,但我可以为你指出正确的方向,

            1. 你需要在自己的配置中定义,并想办法解析它。您可以使用 JAXP、Apache Digester。我很懒所以我使用 Apache Commons Configuration。

            2. 只是名称-值对。您需要将它们转换为属性。

            3. 你可以做一个这样的数据源,

              数据源 ds = org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(prop);

            这样做的副作用是您可以禁用 JNDI (useNaming="false") 以使服务器更轻一些。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-08-13
              • 2013-05-07
              • 1970-01-01
              相关资源
              最近更新 更多