除了在J2EE连接器规范,版本1.0最终版本的连接管理规定的要求,BEA WebLogic Server提供了可选的配置设置和服务并自动保持连接池的大小。
运行时创建的ManagedConnections相关的性能开销最小化的ManagedConnection所代表的企业信息系统(EIS)的复杂,创建的ManagedConnections可以是昂贵的。因此,你可能会决定填充的ManagedConnections的WebLogic Server在启动时的初始数目,从而避免在运行时创建连接池。您可以配置此设置,使用初始容量的weblogic-ra.xml描述符文件的元素。该元素的默认值是1的ManagedConnection。
正如在J2EE连接器规范,版本1.0的最终版本中,当应用程序组件通过资源适配器到EIS的连接请求时,WebLogic Server将首先尝试与任何现有的和可用的ManagedConnection在连接池中的连接请求匹配的类型。然而,如果未发现匹配,一个新的ManagedConnection可被创建,以满足连接请求。
WebLogic Server提供了设置以允许时自动创建一个没有找到匹配的一个的额外的ManagedConnections的。此功能为您提供的灵活性来控制连接池中的增长,随着时间的推移,在服务器上的性能损失,每次出现这种增长。您可以配置此设置,使用的能力增量的weblogic-ra.xml描述符文件的元素。默认值是1的ManagedConnection。
由于没有启动的安全主体或请求的上下文信息是已知的WebLogic Server启动时,的最初的ManagedConnections,初始容量配置,创建一个默认安全上下文包含一个默认的主题和客户端的请求信息的空。当需要额外的ManagedConnections配置能力递增的创建,第一个ManagedConnection的创建与已知的启动主体和客户端的请求信息的连接请求。余下的ManagedConnections的能力增量的限制,使用相同的默认安全上下文时使用创建初始的ManagedConnections。
控制连接池增长
随着越来越多的ManagedConnections随着时间的推移,创建大量的系统资源,如内存和磁盘空间,每个ManagedConnection的消耗增加。根据企业信息系统(EIS),这一数额可能会影响系统的整体性能。要控制的ManagedConnections对系统资源的影响,WebLogic Server允许您配置的设置所允许的最大分配的ManagedConnections数。
您可以配置此设置,使用的weblogic-ra.xml描述符文件的最大容量的元素。如果一个新的ManagedConnection(或一个以上的ManagedConnection能力增量大于1的情况下),需要创建一个连接请求期间,WebLogic Server将确保不超过允许的ManagedConnections的最大数目被创建。如果达到最大值,WebLogic Server会尝试从连接池回收的ManagedConnection。然而,如果有没有回收的连接,将记录一个警告,表明回收的尝试失败,只能被授予的连接请求的连接量的最大允许量。最大容量的默认值是:10的ManagedConnections。
控制系统资源的使用:
虽然设定的最大数量的ManagedConnections可以防止服务器过载分配更多的ManagedConnections比它可以处理,它不会在任何给定的时间内所需的系统资源控制的有效量。WebLogic Server提供了服务,监控活动的ManagedConnections在连接池中的资源适配器的部署。如果使用量减少,而在一段时间内保持在该水平的,连接池的大小减少到必要的有效量,充分满足正在进行的连接请求。
默认情况下,此系统资源使用服务是打开的。不过,关闭这个服务,你可以设置shrinking-enabled元素中的weblogic-ra.xml描述符文件设置为false。使用元素的收缩时期分钟的weblogic-ra.xml描述符文件中设置的频率WebLogic Server的计算需要减少连接池的大小,如果需要减少,有选择地从池中移除未使用的ManagedConnections。该元素的默认值是15分钟。
检测连接泄漏:
连接泄漏导致错误的应用程序组件,如一个Enterprise JavaBean(EJB),而不是做他们的工作,使用后关闭连接。正如在J2EE连接器规范,版本1.0的最终版本,一旦应用程序组件已经完成了它的EIS连接,它发送一个紧密的连接请求。在这一点上,WebLogic Server是负责任何必要的清理,并为未来的连接请求连接。但是,如果应用程序组件无法关闭连接,连接池被耗尽其可用的连接,因此,未来的连接请求失败。
WebLogic Server提供了两种机制,以防止这种情况下:
通过充分利用垃圾收集器
提供一个空闲定时器,用于跟踪的使用的连接对象垃圾收集器的方法。WebLogic Server会自动检测到连接泄漏,利用它的Java虚拟机(JVM)的垃圾收集机制。当终止应用程序组件和连接它使用解引用,垃圾回收器调用连接对象的finalize()方法。
当垃圾收集器调用finalize()方法,如果WebLogic Server确定应用程序组件没有关闭连接时,服务器会自动关闭连接通过调用资源适配器的ManagedConnection.cleanup,()方法; WebLogic Server的行为,因为这将有正确地关闭应用程序组件的连接后,收到了CONNECTION_CLOSED的事件。
空闲计时器方法
因为垃圾收集器并不表现在可预见的方式,实际上可能永远不会被调用,WebLogic Server提供的第二个连接泄漏检测方法,空闲计时器。空闲计时器允许WebLogic Server跟踪每个连接使用最后一次。为每个连接到EIS使用WebLogic Server部署描述符编辑器,您可以配置闲置计时器。请参阅使用控制台部署描述符编辑器编辑文件中的weblogic-ra.xml部署描述符元素。
当一个应用程序组件获得一个连接使用,但不积极地使用它,空闲计时器开始计时。作为预防措施,对关闭的连接,实际上是积极的,当连接已经达到了设定的最大限额时,WebLogic Server不会自动关闭连接。相反,WebLogic Server将等待关闭的连接已经超过了它的空闲时间,直到它这样做是绝对必要的。
如果连接池的资源适配器已超过其分配的连接的最大数目,有没有空闲池分配连接,一个连接请求失败。有时,连接存在,已经被泄露,而不是被放回空闲池,即使他们是无效的。在这种情况下,WebLogic Server将关闭连接的连接请求的时间已超过其最大空闲时间,使请求成功。
弃用以前使用过的元素
连接持续时间时间和连接的清理频率元件现已过时的元素。如果您目前有在您的配置这些参数,你仍然可以使用部署功能。但是,这些元素将配置上没有任何效果。
监视连接使用控制台
J2EE连接器架构的BEA WebLogic Server管理控制台,显示检测到的泄漏,并提供了一种方法寻找堆栈,以确定该应用程序(S)造成泄漏监控功能为您提供。在控制台中的“删除”按钮允许您动态地关闭所确定泄漏的连接,删除连接的选项仅适用于连接已超过其指定的空闲时间,可以安全删除(换句话说,在连接中未涉及交易)。
连接分析功能元素的weblogic-ra.xml文件表示是否连接池的调用堆栈,其中每个连接分配存储。如果该元素的值设置为true,则可以查看此信息,通过控制台上的活动连接。此外,您还可以查看泄露和空闲连接的堆栈中,您可以调试失败的组件,关闭连接。