通过JCA实现企业级应用程序的“即插即用” - 编程入门网
先,应用程序服务器启动。为了配置(或插入)资源适配器,应用程序服务器创建了一个ManagedConnectionfactory并在其上调用createmanagedconnection()方法。如果应用程序服务器委托创建10个连接(这个数目在资源适配器部署期间已经被指定了),它重复这个步骤10次。ManagedConnection的每个实例都处于应用程序服务器的连接池内。连接池实现与我们讨论的问题无关。资源适配器部署配置能控制连接池的参数,例如插入池中的初始连接有多少,池中的最大的连接数,每个连接的生命周期等等。应用程序服务器也使用JavaBean调用约定调用每个ManagedConnectionFactory上的设置方法来设置具体的资源适配器的属性,这也被作为部署信息的一部分来指定。例如,在我们的资源适配器实例中指定的属性是ConnectionURL,将指定要连接到的属性文件。应用程序服务器调用ManagedConnectionFactory上的setConnectionURL ()方法来设置这个属性。
此时,应用程序已经启动并且在应用程序服务器中已经有了我们指定数量的ManagedConnections。一个要求访问企业信息系统的客户先要从引用JNDI的ConnectionFactory实例开始。应用程序服务器在这里监听,然后调用ManagedConnectionFactory实例的createConnectionFactory ()方法 ConnectionFactory使用应用程序服务器ConnectionManager初始化后的实例。 一旦客户程序取得ConnectionFactory的引用,它就调用getConnection ()方法。getConnection ()方法是可以用来调用ConnectionManager的allocateConnection ()方法的代码。这个方法最后调用ManagedConnectionFactory上的matchManagedConnections ()方法。如果matchManagedConnections ()方法决定了ManagedConnection中的一个连接可以被使用,它返回到这个应用程序服务器的连接,而在这样情况下服务器只是简单地调用返回的ManagedConnection实例上的getConnection ()方法。如果存在的ManagedConnection没有可以被使用的,那么应用程序服务器创建一个新的连接直到到了最大值(部署期间指定的)。然后应用程序服务器调用新创建的managedconnection实例的getConnection ()方法。用两种方法,都会把一个连接实例返回到客户程序:通过私有接口或者CCI与企业信息系统交互作用。 代码段1是一个客户端程序(一个EJB)的片段,使用属性文件资源适配器 来访问一个名为Message的属性。注意CCI要实现的属性文件适配器,是EJB用来访问企业信息系统(属性文件)的。 当一个客户程序运用CCI与资源适配器交互作用时,连接上的全部的输入和输出都是通过一个交互对象实现的(见代码段2,InteractionImpl.java) 交互对象通过一个Record对象来起作用。Record对象封装客户程序请求而且还也封装企业信息系统响应,封装出现的方法对于具体的供应厂商来说都不一样。例如,在我们的例子中,客户程序只是创建一个MappedRecord 并且添加它在Record对象中所要作为键检索的所有的属性名(见代码段2,MappedRecord的一个例子) 。客户程序然后调用交互作用的execute ()方法,当方法返回时,Mapped Record中的每个属性值却将被放入Record对象中,作为对应关键字的值,参看代码段2中的exec ()方法。 当客户程序结束使用连接时,它就会调用close ()方法。 实现close ()方法是为了通知应用程序服务器ManageConnection创建的Connection可以被放回可用连接池。应用程序服务器调用ManagedConnection的清除方法,然后把它送回连接池中,除此之外,如果创建一个新的满足接续申请的ManagedConnection的话,应用程序服务器还可以调用destroy ()方法。最终,当应用程序服务器关闭或者卸载资源适配器时,它会调用连接池中的每个ManagedConnection的destroy ()方法。 图2是一幅UML序列图表描述时间的序列 通过J |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
-
HTTP/1.1 401 Access Denied