我很高兴宣布IronJacamar 1.1系列的第六个alpha版本发布。
完整的发布说明在这里 这里。
延迟连接管理器
这次发布标志着IronJacamar 1.1系列相对于稳定版本(在JBoss Application Server 7.1中使用的版本)的第一个新主要功能,即我们延迟连接管理器的首次提交。
那么,什么是延迟连接管理器?为什么你应该关心呢?
延迟连接管理器是Java EE连接器架构1.6规范的可选部分,分为两部分
我们的第一次提交是在“关联”部分,这将允许JCA容器将物理连接重新分配给其他逻辑连接句柄。
嗯,你可能想说...好吧,让我们假设你有一个使用企业信息系统(EIS)连接的应用程序
Connection c1 = myEIS.getConnection(); // Do work with c1 Connection c2 = myEIS.getConnection(); // Do work with c2 c1.close(); c2.close();
但如果只有一个物理连接可用,会发生什么?由于所有连接都由JCA容器控制,"c2"将在创建调用上超时。
这就是“关联”部分发挥作用的地方;IronJacamar将检测应用程序要求另一个连接,但池中没有可用的连接。然后IronJacamar将要求EIS资源适配器断开"c1"的物理连接,并将其附加到"c2"。当使用" c1"或" c2"时,资源适配器必须确保物理连接句柄对逻辑句柄有效。
这基本上允许你在更少的物理连接上多路复用连接句柄;例如,1000到100,从而在EIS层中节省系统资源。
为了给你一个资源适配器可能看起来什么样的概念,我们在我们的文档中添加了一个"HelloWorld/Lazy"示例。
你可以禁用此功能 - 如果你的资源适配器支持 - 通过将"sharable"属性设置为false。
给JCA社区中的硬核群体的一封信;我们已扩展规范API,包括以下方法
/** * Associate a managed connection to a logical connection * * @param connection The connection * @param mcf The managed connection factory * @param cri The connection request information * @return The managed connection * @exception ResourceException Thrown if an error occurs */ public ManagedConnection associateManagedConnection(Object connection, ManagedConnectionFactory mcf, ConnectionRequestInfo cri) throws ResourceException; /** * Dissociate a managed connection from a logical connection. The return value * of this method will indicate if the managed connection has more connections * attached (false), or if it was return to the pool (true). * * If the managed connection is return to the pool its <code>cleanup</code> method * will be called * * @param connection The connection * @param mc The managed connection * @param mcf The managed connection factory * @return True if the managed connection was freed; otherwise false * @exception ResourceException Thrown if an error occurs */ public boolean dissociateManagedConnection(Object connection, ManagedConnection mc, ManagedConnectionFactory mcf) throws ResourceException;
第一种方法可以帮助您,如果您在连接和管理连接之间没有简单的链接;关联连接
回调仍然会发生——请记住这一点。
第二种方法允许您在知道您一段时间内不会使用管理连接时将其断开。这样,JCA容器更容易将其分配给其他调用者。这个用例不是现有JCA规范的一部分。很棒的东西。
这只是一个第一步,但我们已经上路了:)
其他更改
本次发布的其他更改主要集中在修复我们在与JBoss应用程序服务器和即将发布的JBoss企业应用程序平台版本测试期间发现的错误。
不过,我们的代码生成器有一个很好的更新,这应该会给您的开发提供一个更好的起点。
前方之路
测试仍在继续,我们还有更多酷炫的东西在路上,所以请务必回来查看,或者在论坛上联系我们。
向即将摇滚的人致敬!