Java遗留系统的服务封装方法及系统的制作方法

文档序号:7719549阅读:161来源:国知局
专利名称:Java遗留系统的服务封装方法及系统的制作方法
技术领域
本发明涉及网络通信领域,特别是一种Java遗留系统的服务封装方法及系统。
背景技术
现在基于Java技术开发的系统数量十分巨大,随着应用环境的改变,许多以非网 络服务(Web Services,简称Web服务)形态存在的系统需要进行Web服务封装,以修改成 以Web服务形态存在的系统,即把系统中部分本地调用的关系修改成使用Web服务调用,利 用Web服务来实现程序间通信。 现有技术中的Java2WSDL工具可以根据Java类来生成该Java类的Web服务描述 语言(Web Service Description Language,简称WSDL)文件。但是,该Java2WSDL工具只 能生成Java类的WSDL文件,不提供Java类的服务封装,以及访问服务的客户端生成,需要 手动调用另一个WSDL2Java工具来实现。该WSDL2Java工具也无法自动的把原有的Java 遗留系统中相应的部分修改成利用客户端访问封装好的服务。 在实现本发明过程中,发明人发现现有技术中至少存在如下问题为了达到将 Java遗留系统封装成服务的目的,使用者仅依靠Java2WSDL工具无法实现,还需要利用 WSDL2JAVA工具,以及大量的手工的程序编写,操作复杂,而且将Java遗留系统封装成服务 并正常运行所需要的时间比较长。

发明内容
本发明实施例提供一种Java遗留系统的服务封装方法及系统,能够自动地完成 Java遗留系统的服务封装,操作简单,縮短将Java遗留系统封装成Web服务并正常运行所 需要的时间。 本发明实施例提供了一种Java遗留系统的服务封装方法,包括 获取Java遗留系统的位置信息、服务封装所需被封装成网络服务的类和方法的
信息、以及与所述类相关联的类的信息; 根据所述位置信息、以及所述类、与所述类相关联的类和方法的信息创建服务描 述文件,并将所述服务描述文件和所述类以网络服务容器支持的格式打包生成网络服务 包; 根据所述类、与所述类相关联的类和方法的信息创建访问所述网络服务包的客户
端代理类,并用所述客户端代理类替换所述Java遗留系统中对应的同名文件。 本发明实施例还提供了一种Java遗留系统的服务封装系统,包括 封装管理模块,用于获取Java遗留系统的位置信息、服务封装所需被封装成网络
服务的类和方法的信息、以及与所述类相关联的类的信息; 服务封装模块,用于根据所述位置信息、以及所述类、与所述类相关联的类和方法 的信息创建服务描述文件,并将所述服务描述文件和所述类以网络服务容器支持的格式打 包生成网络服务包;
4
服务代理生成模块,用于根据所述类、与所述类相关联的类和方法的信息创建访 问所述网络服务包的客户端代理类,并用所述客户端代理类替换所述Java遗留系统中对 应的同名文件。 由上述技术方案可知,本发明实施例只需要获取Java遗留系统的位置信息和服 务封装的相关信息,就可以自动完成Web服务的封装以及相应的访问Web服务的客户端的 生成工作。本发明实施例的输出结果是被封装好的Web服务包和以原Java系统形式存在 的用于访问Web服务包的客户端部分,通过部署封装好的web服务包,并利用所生成的客户 端部分替代原来的Java遗留系统,即可完成Java遗留系统的服务封装工作。本发明实施 例所采用的上述新式的封装和创建Web服务的方法,操作简单,极大地方便了用户,縮短了 将Java遗留系统封装成Web服务并正常运行所需要的时间。
下面结合附图对本发明的具体实施例作进一步详细的说明。


图1为本发明Java遗留系统的服务封装方法的第一实施例的流程示意图
图2为本发明Java遗留系统的服务封装方法的第二实施例的流程示意图
图3为本发明Java遗留系统的服务封装方法的第三实施例的流程示意图
图4为本发明Java遗留系统的服务封装系统的第一实施例的结构示意图
图5为本发明Java遗留系统的服务封装系统的第二实施例的结构示意图。
具体实施例方式
图1为本发明Java遗留系统的服务封装方法的第一实施例的流程示意图,如图1 所示,本实施例可以包括以下步骤 步骤101、获取Java遗留系统的位置信息、服务封装所需被封装成Web服务的类和 方法的信息、以及与上述类相关联的类的信息; 步骤102、根据上述位置信息、以及上述类和方法的信息创建服务描述文件,并将 上述服务描述文件和上述类以Web服务容器支持的格式打包生成Web服务包;
步骤103、根据上述类和方法的信息创建访问上述Web服务包的客户端代理类,并 用上述客户端代理类替换上述Java遗留系统中对应的同名文件。 本实施例中,只需要获取Java遗留系统的位置信息和服务封装的相关信息,就可 以自动完成Web服务的封装以及相应的访问Web服务的客户端的生成工作。本发明实施例 的输出结果是被封装好的Web服务包和以原Java系统形式存在的用于访问Web服务包的 客户端部分,通过部署封装好的恥b服务包,并利用所生成的客户端部分替代原来的Java 遗留系统,即可完成Java遗留系统的服务封装工作。本实施例所采用的上述新式的封装和 创建Web服务的方法,操作简单,极大地方便了用户,同时縮短了将Java遗留系统封装成 Web服务并正常运行所需要的时间。 图2为本发明Java遗留系统的服务封装方法的第二实施例的流程示意图,如图2 所示,本实施例可以包括以下步骤 步骤201、封装管理模块获取用户输入的Java遗留系统的位置信息、服务封装所 需被封装成Web服务的类和方法的信息、以及与上述类相关联的类的信息;
步骤202、服务封装模块根据封装管理模块所获取的上述位置信息、以及需要被封
装成Web服务的类、与上述类相关联的类和方法的信息创建服务描述文件,并且把服务描
述文件和要打包的类一起以Web服务容器支持的格式打包生成Web服务包; 步骤203、封装管理模块创建一份Java遗留系统的拷贝,存到临时文件夹中,以确
保本系统所做改变不会影响原有系统。 其中的创建拷贝的功能不只是简单地拷贝Java遗留系统中的文件,对于Java遗 留系统中以".class"后缀名命名的文件直接复制到临时文件夹的同名目录,对于Java遗 留系统中以jar包格式保存的字节码文件把jar包中的内容解压縮到临时文件夹;
步骤204、封装管理模块利用Java2WSDL工具生成Web服务包里每个类的WSDL文 件; 步骤205、桩生成模块通过服务管理模块获取服务封装模块所生成的Web服务包 的信息,并利用上述Web服务包的信息和Web服务包里的每个类的WSDL文件生成相应的桩 文件; 步骤206、桩生成模块动态编译上述桩文件,并将编译后的字节码文件对应地插入 被封装成Web服务的那些类文件在Java遗留系统中的位置; 步骤207、服务代理生成模块根据封装管理模块所获取的需要被封装成Web服务 的类、与上述类相关联的类和方法的信息利用字节码技术创建访问上述Web服务包的客户 端代理类,并利用新创建的同名Java类文件即客户端代理类替换Java遗留系统中对应的 Java类文件; 步骤208、封装管理模块将修改后的Java遗留系统的拷贝按Java遗留系统的格式 重新格式化。 上述格式化是指将修改后的存有Java遗留系统拷贝的临时文件夹中的内容组织 成原来Java遗留系统的格式,主要是将已经解压縮的部分重新压縮成Java的jar包格式。
本实施例的流程处理过后,会产生两个结果文件夹,其中一个保存着打包好的Web 服务包,另一个生成的是访问这个Web服务包的客户端,这两部分中包括着原来Java遗留 系统中的全部功能逻辑,使得原有的Java遗留系统在功能上没有改变,只是使用形式发生 改变。 图3为本发明Java遗留系统的服务封装方法的第三实施例的流程示意图,如图3 所示,与上一实施例相比,本实施例中步骤207可以具体包括以下步骤
步骤301、封装管理模块将需要被封装成Web服务的类、与上述类相关联的类和方 法的信息传送给服务代理生成模块; 步骤302、服务代理生成模块分别创建需要被封装成Web服务的每个类的同名字 节码文件; 步骤303、服务代理生成模块分别创建每个字节码文件中的需要被封装成Web服 务的方法,方法名和参数类型与要封装成Web服务的类中的方法相一致;
步骤304、服务代理生成模块分别创建每个方法的方法体,以供利用相应的桩文件 访问生成的Web服务包,此方法实现将获得的参数传给Web服务包中的相应服务,并接受 Web服务包返回的结果作为返回值; 步骤305、服务代理生成模块利用生成的字节码文件覆盖临时文件夹中的Java遗留系统的同名文件。 例如在原有的遗留系统中有类A调用了类B中的方法实现中,本实施例可以利用 字节码技术生成一个Bl类,这个类Bl与类B具有相同的名字,而且Bl类也拥有被A使用 到的那个方法,并且方法名、参数和返回值皆与类B中的方法一样,只不过类Bl中的方法实 现的是将接收到的参数传给被打包成服务的类B,并将类B处理后的结果作为返回值返回。 这样,在遗留系统中,类A调用的是类B,被此发明中的系统处理后,类A调用的是类Bl,而 类Bl利用Web服务来与类B通信, 一次调用变成了两次调用,而这些,对于类A透明,也就 是说并不会影响Java遗留系统的原有功能逻辑,而又实现了从本地调用到Web服务调用的 转变。 可替换地,将上述本发明Java遗留系统的服务封装方法的第二实施例和第三实 施例中有关桩的部分替换成所创建的一个服务端代理类,即在服务端再增加一个代理。具 体来说,步骤207中所创建的代理类包括客户端和服务端两部分,客户端不再利用桩,而是 采用另一种客户端的形式,编写的代码直接与服务端的代理通信,服务端的代理负责信息 格式转换,它作为服务的一部分,与真正客户端要调用的程序相交互。 图4为本发明Java遗留系统的服务封装系统的第一实施例的结构示意图,如图4 所示,本实施例可以包括封装管理模块41、服务封装模块42和服务代理生成模块43。封 装管理模块41用于获取Java遗留系统的位置信息、服务封装所需被封装成网络服务的类 和方法的信息、以及与所述类相关联的类的信息;服务封装模块42用于根据所述位置信 息、以及所述类、与所述类相关联的类和方法的信息创建服务描述文件,并将所述服务描述 文件和所述类以网络服务容器支持的格式打包生成网络服务包;服务代理生成模块43用 于根据所述类、与所述类相关联的类和方法的信息创建访问所述网络服务包的客户端代理 类,并用所述客户端代理类替换所述Java遗留系统中对应的同名文件。
本实施例中,只需要封装管理模块获取Java遗留系统的位置信息和服务封装的 相关信息,服务封装模块就可以自动完成Web服务的封装以及服务代理生成模块就可以自 动完成相应的访问Web服务的客户端的生成工作。本发明实施例的输出结果是被封装好的 Web服务包和以原Java系统形式存在的用于访问Web服务包的客户端部分,通过部署封装 好的web服务包,并利用所生成的客户端部分替代原来的Java遗留系统,即可完成Java遗 留系统的服务封装工作,操作简单,极大地方便了用户,縮短了将Java遗留系统封装成Web 服务并正常运行所需要的时间。 图5为本发明Java遗留系统的服务封装系统的第二实施例的结构示意图,如图5 所示,与上一实施例相比,本实施例还可以包括桩生成模块44,用于根据所述网络服务包生 成所述类的网络服务描述语言文件,以及根据所述网络服务包的信息和所述网络服务描述 语言文件生成所述类的桩文件,并将所述桩文件插入到所述Java遗留系统中的对应位置。 桩生成模块44可以通过封装管理模块41获取服务封装模块42所生成的网络服务包的信 息。 可替换地,本实施例也可以不包括桩生成模块44,代替他的则是本实施例中服务 代理生成模块43还可以用于根据所述类、与所述类相关联的类和方法的信息创建访问所 述网络服务包的服务端代理类。服务代理生成模块43所创建的代理类包括客户端和服务 端两部分,客户端不再利用桩,而是采用另一种客户端的形式,编写的代码直接与服务端的代理通信,服务端的代理负责信息格式转换,它作为服务的一部分,与真正客户端要调用的 程序相交互。 最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
一种Java遗留系统的服务封装方法,其特征在于包括获取Java遗留系统的位置信息、服务封装所需被封装成网络服务的类和方法的信息、以及与所述类相关联的类的信息;根据所述位置信息、以及所述类、与所述类相关联的类和方法的信息创建服务描述文件,并将所述服务描述文件和所述类以网络服务容器支持的格式打包生成网络服务包;根据所述类、与所述类相关联的类和方法的信息创建访问所述网络服务包的客户端代理类,并用所述客户端代理类替换所述Java遗留系统中对应的同名文件。
2. 根据权利要求1所述的方法,其特征在于所述根据所述类、与所述类相关联的类和 方法的信息创建访问所述网络服务包的客户端代理类之前还包括根据所述网络服务包生成所述类的网络服务描述语言文件;根据所述网络服务包的信息和所述网络服务描述语言文件生成所述类的桩文件; 将所述桩文件插入到所述Java遗留系统中的对应位置。
3. 根据权利要求2所述的方法,其特征在于所述根据所述类、与所述类相关联的类和 方法的信息创建访问所述网络服务包的客户端代理类,并用所述客户端代理类替换所述 Java遗留系统中对应的同名文件具体包括根据所述类的信息创建与所述类同名的类的字节码文件;根据所述方法的信息在所述字节码文件中创建与所述方法同名并接受相同参数的方法;将包含所述方法的字节码文件修改成利用所述桩文件访问所述网络服务包的客户端 代理类;利用修改后的字节码文件替换所述中对应的字节码文件。
4. 根据权利要求1所述的方法,其特征在于所述根据所述类、与所述类相关联的类和 方法的信息创建访问所述网络服务包的客户端代理类,并用所述客户端代理类替换所述 Java遗留系统中对应的同名文件具体包括根据所述类、与所述类相关联的类的信息创建与所述类同名的类的字节码文件; 根据所述方法的信息在所述字节码文件中创建与所述方法同名并接受相同参数的方法;将包含所述方法的字节码文件修改成利用所创建的服务端代理类访问所述网络服务 包的客户端代理类;利用修改后的字节码文件替换所述Java遗留系统中对应的字节码文件。
5. 根据权利要求1至4任一权利要求所述的方法,其特征在于所述方法还包括创建 所述Java遗留系统的拷贝,以供进行服务封装。
6. —种Java遗留系统的服务封装系统,其特征在于包括封装管理模块,用于获取Java遗留系统的位置信息、服务封装所需被封装成网络服务 的类和方法的信息、以及与所述类相关联的类的信息;服务封装模块,用于根据所述位置信息、以及所述类、与所述类相关联的类和方法的信 息创建服务描述文件,并将所述服务描述文件和所述类以网络服务容器支持的格式打包生 成网络服务包;服务代理生成模块,用于根据所述类、与所述类相关联的类和方法的信息创建访问所述网络服务包的客户端代理类,并用所述客户端代理类替换所述Java遗留系统中对应的 同名文件。
7. 根据权利要求6所述的系统,其特征在于所述系统还包括桩生成模块,用于根据所 述网络服务包生成所述类的网络服务描述语言文件,以及根据所述网络服务包的信息和所 述网络服务描述语言文件生成所述类的桩文件,并将所述桩文件插入到所述Java遗留系 统中的对应位置。
8. 根据权利要求6所述的系统,其特征在于所述服务代理生成模块还用于根据所述 类、与所述类相关联的类和方法的信息创建访问所述网络服务包的服务端代理类。
全文摘要
本发明涉及一种Java遗留系统的服务封装方法及系统,方法包括获取Java遗留系统的位置信息、服务封装所需被封装成Web服务的类和方法的信息、以及与类相关联的类的信息;根据位置信息、类、相关联的类和方法的信息创建服务描述文件,将服务描述文件和类以Web服务容器支持的格式打包生成Web服务包;根据类、相关联的类和方法的信息创建访问Web服务包的客户端代理类,用客户端代理类替换Java遗留系统中对应的同名文件。本发明只需要获取Java遗留系统的位置信息和服务封装的相关信息,就可以完成Web服务的封装以及相应的客户端的生成工作,采用了新式的封装和创建Web服务的方法,缩短了将Java遗留系统封装成Web服务并正常运行所需要的时间。
文档编号H04L29/06GK101695070SQ20091023530
公开日2010年4月14日 申请日期2009年9月30日 优先权日2009年9月30日
发明者刘旭东, 孙海龙, 怀进鹏, 李翔, 杜宗霞, 高鹏 申请人:北京航空航天大学;
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1