一种对企业级Java组件的方法进行调用的方法技术

技术编号:2920816 阅读:219 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种对企业级Java组件的方法进行调用的方法,在指定的企业级Java组件(EJB)的描述文件中声明异步方法,然后执行以下步骤:A.客户端通过应用程序接口将调用目标EJB方法的请求发送至EJB框架;B.EJB框架判断目标EJB的描述文件中是否已将客户端调用的目标EJB的方法声明为异步方法,如果是,则执行步骤C,否则,执行调用同步方法,然后结束本流程;C.EJB框架创建一个异步调用对象,为目标EJB的异步方法启动一个未被使用的异步调用线程,并使该异步调用线程获得执行锁,然后将该异步调用线程传递给目标EJB的容器;D.该EJB容器调用目标EJB中的异步方法。本发明专利技术方法能够大大简化客户端调用EJB方法的过程。

【技术实现步骤摘要】

本专利技术涉及Java技术,特别是涉及。
技术介绍
在Java技术中,组件(Bean)是一个基于Java软件组件模型(JavaBeans)的可重复使用的Java模块。在Bean中,方法是一个代码模块,生成一个对象实例的行为,并且与程序性编程语言中的函数相似。为了定义一个方法,Bean的提供者必须对该方法进行声明,然后实现其主体。而客户端可以通过调用Bean的方法来获取和设置Bean的属性,并完成对Bean的各种操作。企业级Java Bean(EJB,Enterprise Java Bean)是实现服务器端应用服务的组件。EJB架构是支撑EJB的容器系统,是一种针对面向对象分布式商业应用的开发和部署的组件式架构。使用EJB架构开发的应用,具有良好的伸缩性、可靠的事务处理和多用户安全性,而且,这些应用只需开发一次,即可部署到任何支持EJB规范的服务器平台。EJB架构能够灵活实现下述部件一种代表无状态服务的对象;一种代表无状态服务的对象,实现环球网(WEB)服务终端(endpoint);一种代表无状态服务的对象,提供消息驱动的异步调用;一种代表客户端会话的对象,自动维护多个客户端调用方法的会话状态;一种实体对象,代表可被多个客户端共享的商业对象;一种实体对象,代表一种细线条(fine-grained)的持久性存储对象,其中包含了相应粗线条(coarse-grained)商业对象的持久性存储状态。针对上述特点,EJB架构定义了三种类型的EJB会话Bean(SessionBean)、实体Bean(Entity Bean)和消息驱动Bean(MDB,Message-drivenBean)。并且,EJB架构规定,会话Bean和实体Bean的方法为同步方法,即所有对会话Bean或实体Bean的调用都是同步的,而MDB的方法为异步方法,即所有对MDB的调用都是异步的。由于客户端必须通过调用Bean的方法来完成对Bean对象的各种操作,但是同步调用是使用当前正在执行的线程,客户端的调用很可能被阻塞,而异步调用则是独占一个线程,客户端的调用不会被阻塞,客户端经常需要通过调用Bean的异步方法来完成对Bean的各种操作。因此,为了达到对会话Bean或实体Bean方法的异步调用,现有技术采用了一个迂回的手段,即通过MDB来实现对会话Bean或实体Bean方法的异步调用。在现有技术中,Bean的提供者为会话Bean或实体Bean提供一个特定的MDB,并指定该MDB在Java消息服务器(JMS)中的标识Topic,以及指定该MDB可处理的JMS消息的协议类型。同时,Bean的提供者指定标识Topic、MDB与Bean三者之间一一对应的关系。图1是现有技术对会话Bean或实体Bean的方法进行异步调用的示意图,图2是现有技术对会话Bean或实体Bean的方法进行异步调用的流程图。参见图1和图2,在现有技术中,实现对会话Bean或实体Bean的方法进行异步调用的具体过程包括以下步骤步骤201客户端在JMS服务器的上下文(Context)中,查找到(lookup)与目标Bean即客户端调用的会话Bean或实体Bean相对应的标识Topic。步骤202客户端将请求调用目标Bean异步方法的JMS消息发送至JMS服务器。这里,客户端发送的JMS消息的协议类型为Bean的提供者部署该目标Bean时所指定的JMS消息的协议类型。并且,客户端发送的JMS消息中携带有目标Bean方法的名称。步骤203JMS服务器判断当前是否有其它调用在执行,如果是,则执行步骤204,否则直接执行步骤205。步骤204JMS服务器将客户端的调用保存在调用队列中,当调用线程的下一次轮询到达时,返回步骤203。步骤205JMS服务器将接收到的JMS消息发送到与查找到的标识Topic对应的MDB上。步骤206MDB解析JMS消息,在EJB服务器的上下文中查找到目标Bean,然后通过该目标Bean的Home接口得到Bean的一个实例。这里,因为客户端所要调用的目标Bean与MDB之间存在对应关系,所以MDB在EJB服务器的上下文中查找到与其对应的Bean后,即查找到了目标Bean。步骤207MDB向EJB框架(EJB Stub)发送调用消息,并在该调用消息中携带目标Bean的接口参数。步骤208EJB框架为目标Bean创建一个调用对象,将所创建的调用对象存入当前调用队列中。步骤209EJB框架判断当前是否有调用线程在目标Bean上执行,如果是,则执行步骤210,否则直接执行步骤211。步骤210在当前调用队列中等待,当调用线程的下一次轮询到达时返回步骤209。步骤211当前调用线程获得执行锁,EJB框架将当前调用线程传递给EJB容器。步骤212EJB容器调用客户端所需的目标Bean的方法。图3是现有技术对会话Bean或实体Bean的方法进行同步调用的流程图。参见图3,在现有技术中,实现对目标会话Bean或实体Bean的方法进行同步调用的具体过程包括以下步骤步骤301客户端通过Bean在客户端上下文中的Home Stub查找到(lookup)目标Bean即客户端所要调用的会话Bean或实体Bean的Home接口。步骤302客户端通过调用所查找到的Home接口的create()方法创建一个Bean实例,并通过目标Bean在客户端的Remote Stub调用目标Bean的方法。步骤303EJB框架创建一个同步调用对象,并将该同步调用对象存入SFSB对象实例框架的调用队列的当前同步线程中。步骤304EJB框架判断当前是否有调用线程在目标Bean上执行,如果是,则执行步骤305,否则直接执行步骤306。步骤305EJB框架将客户端的调用保存在步骤303中所述的调用队列中,当调用线程的下一次轮询到达时,返回步骤304。步骤306当前同步调用线程获得执行锁,EJB框架取出同步调用对象交给EJB容器。步骤307EJB容器调用客户端所需的目标Bean中的方法。由此可见,现有技术实现对会话Bean或实体Bean的方法进行调用的过程存在以下缺点1、对EJB的同步方法和异步方法进行调用采取了不同的途径,客户端无法通过统一的手段声明其调用,从而大大增加了客户端实现调用EJB方法的难度。2、对会话Bean或实体Bean方法的异步调用必须经过6层结构,即JMS客户端、JMS服务器、MDB、EJB框架、EJB容器和目标Bean,使得调用过程繁杂,大大降低了系统性能。3、客户端对会话Bean或实体Bean的方法执行异步调用,是通过发送JMS消息到MDB上来完成的,所以Bean的提供者必须理解JMS的架构,这样才可以使其提供的MDB能够解析出JMS消息,从而为Bean提供者增加了工作难度,降低了Bean提供者的生产效率,并降低了应用的可维护性。4、Bean的提供者需要规定MDB可解析的JMS消息所遵从的协议类型,而该协议类型并没有统一标准,所以容易造成Bean提供者规定的JMS消息的协议类型与客户端发送的JMS消息的协议类型存在不同,从而导致调用无法执行。5、客户端发送的JMS消息的协议类型必须为Bean的提供者部署Bean时所指定的消息协议类型,客户端必须能够制造不同协议类型的JMS消息,本文档来自技高网...

【技术保护点】
一种对企业级Java组件的方法进行调用的方法,其特征在于,在指定的企业级Java组件EJB的描述文件中声明异步方法,该对企业级Java组件的方法进行调用的方法还包括以下步骤:A、客户端通过应用程序接口将调用目标EJB方法的请求发送至 EJB框架;B、EJB框架判断目标EJB的描述文件中是否已将客户端调用的目标EJB的方法声明为异步方法,如果是,则执行步骤C,否则,调用同步方法,然后结束本流程;C、EJB框架创建一个异步调用对象,为目标EJB的异步方法启动 一个未被使用的异步调用线程,然后将该异步调用线程传递给目标EJB的容器;D、该EJB容器调用目标EJB中的异步方法。

【技术特征摘要】

【专利技术属性】
技术研发人员:卡辛克MK尤岱金史尔杰立库澜
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1