本文共 3260 字,大约阅读时间需要 10 分钟。
dbcp、c3p0 是两个数据库连接池}
JNDI 只是一种资源管理方式,C3P0是数据源连接池的配置方式
这两个不能直接用来比较吧,使用JNDI管理数据库连接池,连接池可以使用C3P0,也可是使用DBCP等方式JNDI从抽象层面上来看要在C3P0上层,也就是说JNDI提供的服务是有可能由C3P0和其他包来实现的。
连接池技术能显著增加Java应用程序的性能,同时还能降低资源使用率。连接池技术的主要优点包括:
· 缩短了连接创建时间
与其他数据库相比,MySQL提供了快速的连接设置功能,连接时间通常不是问题,但创建新的JDBC连接仍会导致联网操作和一定的IDBC驱动开销,如果这类连接是“循环”使用的,使用该方式,可避免这类不利因素。
· 简化的编程模型
使用连接池技术时,每个单独线程能够像创建了自己的JDBC连接那样进行操作,从而允许使用直接的JDBC编程技术。
· 受控的资源使用
如果不使用连接池技术,而是在每次需要时为线程创建新的连接,那么应用程序的资源使用将十分浪费,而且在负载较重的情况下会导致无法预期的结果。
注意,与MySQL的每个连接均会在客户端和服务器端造成一定的开销(每寸、CPU、关联转换等)。每个连接均会对应用程序和MySQL服务器的可用资源带来一定的限制。无论连接是否执行任何有用的任务,仍将使用这些资源中的相当一部分。
连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,如果超过该水平,应用程序将崩溃而不仅仅是变慢。
在中间件中通过JNDI Datasource,可以方便的通过名字获取数据库连接,另外,一般中间件对数据库连接都会做warpper,方便了对数据库连接池资源的管理,比方说连接泄漏的管理等等。实际上,开发人员只需要知道JNDI名字,通过JNDI lookup,就方便的可以使用数据库连接了。而中间件管理人员则负责数据库连接池的管理。 是的,但tomcat有其恶心的一面 tomcat的jndi有一个缺点:会强制给你的jndi name加上 java:/com/env前缀 而其它app server不会这么干 所以如果你本地用tomcat,生产用jboss/weblogic,那你的生产环境的jboss/weblogic就必须用java:com/env风格的jndi才能实现无缝切换
转载地址:http://boadi.baihongyu.com/