java – Tomcat和其他容器中的数据源和连接池与JNDI有什么关系?

我试图了解连接池(JDBC连接池).根据答案in this question,每个容器都有自己的机制.我也试图理解JNDI及其实现,无论是什么帖子或文章都与网络中的对象相关,如目录和用户,这里有一些文章:

http://www.oracle.com/technetwork/java/jndi/index.html
http://www.oracle.com/technetwork/java/overview-142035.html

阅读本文,介绍如何在Tomcat容器中管理连接池,第二段

javax.sql.DataSource interface is registered with the naming service
based on JNDI API. A data source driver allows accessed to the
database via DataSource interface. A DataSource object is looked up in
the context based on registered through JNDI Resource

问题是JNDI和网络目录与实例化提供连接池的DataSource实现有什么关系,可能是通过flyweight设计模式实现的?

我错过了什么吗?

解决方法:

它们没有直接关系. DataSource只是用于管理数据库连接池中的连接的接口.任何Java Servlet容器或Java EE容器都可以为此接口提供自己的实现.

作为应用程序开发人员,您无需担心容器如何实例化此实现或实际实现类.

要在实际容器实现和应用程序之间提供松散耦合,您只需要获取此实现的实例,这通常通过JNDI完成.

容器实例化DataSource实现并将其绑定到JNDI注册表中的特定地址,您可以在其中将其作为应用程序开发人员进行检索.在应用程序中,您只需使用DataSource接口来访问此实现,从而使您的应用程序可以在不同的服务器及其各自的DataSource实现上移植.

上一篇:java – Tomcat中的JNDI配置


下一篇:[转]什么鬼,又不知道怎么命名class了