我试图理解连接池(JDBC连接池)。根据这个问题的答案,每个容器都有自己的机制。我还试图了解JNDI及其实现,以及与在网络中定位对象(如目录和用户)相关的任何帖子或文章,以下是一些文章:
http://www.oracle.com/technetwork/java/jndi/index.htmlhttp://www.oracle.com/technetwork/java/overview-142035.html
阅读这篇描述如何在Tomcat容器中管理连池的文章,第二段
javax。sql。数据源接口是基于JNDI API向命名服务注册的。数据源驱动程序允许通过数据源接口访问数据库。基于通过JNDI资源注册的数据源对象在上下文中查找
问题是JNDI和networking目录与实例化提供连接池的数据源实现有什么关系,可能是通过flyweight设计模式实现的?
我错过什么了吗?
有时,JNDI用作对象存储(Java对象),不是通过网络或文件系统访问对象,例如打印机和目录,而是访问已经在内存中实例化的Java对象。我之所以感到困惑,是因为每当您阅读JNDI时,它都会解释它的主要用途,而不是用来实例化数据源对象的方式:
这是oracle教程中的一段话:
目录作为对象存储除了以传统方式使用目录外,Java应用程序还可以将其用作Java对象的存储库,即存储和检索Java对象。例如,Java打印客户端程序应该能够从目录中查找打印机对象,并将数据流发送到打印机对象进行打印。
http://docs.oracle.com/javase/jndi/tutorial/getStarted/concepts/java.html
要想象这些完全不相关的技术是如何工作的,最好说明为什么会存在像JNDI、池化这样的东西。
>
JPA—您已经厌倦了编写特定于数据库的代码,所以您编写了一个库来处理许多与持久性相关的事情,这样您的生活就更轻松了。
JNDI——您正在以企业应用程序的形式编写Java应用程序,可以是Java EE,也可以是某种不推荐的替代Spring。你必须以某种方式创造。朴素的方法是让应用程序创建自己的数据源(在Spring中仍然可行)。更好的方法是在服务器上配置数据源。数据源由一个名称标识,应用程序只指定名称,而不指定其他名称。然后,将数据源部署到应用程序服务器时,将其注入应用程序。数据源配置和创建在服务器上完成,并通过JNDI注入到应用程序中。例如,通过这种方式,您可以让更多的应用程序使用相同的连接池共享相同的数据源。
但JNDI不仅仅为数据源“注入”服务。使用JNDI,您可以识别和本地化任何资源。
它们没有直接关系。DataSource只是一个用于管理数据库连接池中连接的接口。任何Java Servlet容器或Java EE容器都可以为此接口提供自己的实现。
作为应用程序开发人员,您无需担心容器如何实例化此实现或实际实现类是什么。
为了在实际的容器实现和您的应用程序之间提供松散的耦合,您只需要获取一个通常通过JNDI完成的实现的实例。
容器实例化DataSource实现并将其绑定到JNDI注册表中的特定地址,您可以在其中以应用程序开发人员的身份检索它。在应用程序中,您只需使用DataSource接口来访问此实现,从而使您的应用程序可移植到不同的服务器及其各自的DataSource实现。
我无法连接到两个数据源使用在JDNI与Spring Boot。 生成以下stacktrace: 我做错了什么?
客户端发送另一个请求,服务器再次挂起该请求。 当这种情况持续发生时,会使用多少线程?
我需要知道我对上面的理解是否正确。 在连接池中,可以使用java.sql.DataSource设置多个连接。 在jdbc中,我们直接指定连接url和oracle.jdbc.driver.OracleDriver并且它总是一个连接,另一个请求必须等待到连接完成处理。 使用JNDI与直接jdbc类似,我们通过名称引用jdbc设置,这样我们就可以在应用服务器中指定连接url和其他设置,而不是将它们绑定到
我们正在使用tomcat jdbc连接池与Oracle数据库。最近,我们遇到了JDBC瘦客户机的Oracle数据库中存在太多非活动会话的问题。 有人能帮我们吗?它为什么会导致数据库中的非活动会话,以及对此的解决方案是什么。
问题内容: 强制关闭与数据库的所有其他连接的SQL命令是什么。这是针对SQL Server 2008 问题答案: 一种使用ROLLBACK IMMEDIATE的方式 您可以使用KILL,但也要防止重新连接。
问题内容: 我想在Java SE应用程序中使用JNDI配置数据源。做这个的最好方式是什么? 到目前为止,我遇到了两个项目: Apache命名。项目页面上有一个用于配置数据源的特定示例,但看起来该项目已过时并且不再处于活动状态。 JBossNS。使用似乎很容易配置仅本地的JNDI ,但我还没有找到任何有关如何实际配置数据源的文档。 如果可能,我还要使用JTA事务管理器(使用JOTM?)配置数据源。