论文部分内容阅读
【摘要】本文结合Web Service,在Eclipse平台上实现了基于Eclipse的JMS插件。只需在JMS插件上配置一些用户基本信息,就可以自动生成Web Service提供端和客户端的代码。
【关键词】Eclipse Web Service Xfire 插件
1 引言
在现在的网络环境中,跨平台的可互操作性是近年来争相讨论的话题。Web Service正是这一时期的产物,它实现了跨防火墙的通信、异构平台的应用、企业应用集成、行业内部B2B的应用和强安全特性的应用。它的实现将会大大改变商业运做的模式和信息交流的风格。而Xfire是新一代的Web Service框架,它通过提供简单的API和支持标准协议,便可以开发面向服务的程序。
基于Eclipse的插件,近几年成为研究的热点和重点,因为Eclipse是一个开放的、通用的、可扩展的集成开发环境,而且它提供了一个用于开发插件的框架,通过开发相应的Eclipse插件,提高了项目的开发效率和质量。当前,已经出现了不少Eclipse插件,比如,Hibernate插件、HTML图形化插件等。但针对Web Service的插件目前还没有。我们开发了基于Eclipse的Web Service插件,它不但能简化开发过程,而且具有扩展能力强、使用方便、可靠性高等优点。
2 Web Service
Web Service是建立可互操作的分布式应用程序的新平台,它透过Web通讯协议及资料格式的开放标准来为应用程序提供服务,其中它的最基本协议包括:SOAP(简单对象访问协议,它规定了Web Service之间是怎样传递信息的。)、WSDL(Web Service描述语言)和UDDI(通用服务发布与发现规范,用于集中存放和查找WSDL描述文件,起着目录服务器的作用。)一个Web Service的生命周期,如图1所示:(1)提供端发布一个Web Service,使其能够接受和响应SOAP消息;(2)撰写一个WSDL文件用于描述此Web Service;(3)将此WSDL发布到UDDI上;(4)客户端从UDDI上搜索到发布的WSDL;(5)根据发布的WSDL,客户端可以编写程序。Web Service的安全性和保密性是非常重要的问题。WS-Security通过利用现有标准和规范来实现安全性,它提供了三种可选的Web Service安全模式:Username Token模式,Encrypt模式,Sign模式。
实现Web Service的框架有很多,但Xfire框架支持一系列Web Service的新标准,它通过提供简单的API和支持标准协议,便可以开发面向服务的程序,它消除了使用不同组件模型、操作系统与编程语言系统之间存在的差异, 使异类系统能够作为计算网络的一部分协同运行。
3 Web Service插件
3.1 Web Service插件的设计方案
Web Service包括两个部分:提供端和客户端。提供端基础代码包括服务xml、一个接口和它的实现类;客户端基础代码包括一个与提供端接口相同的接口,如果提供端发布了值对象,则有与提供端相同的值对象,如果提供端发布了复杂类型的绑定,则有与提供端相同的绑定文件。在最原始的配置文件及java类编写方式——手工编写时,从业务逻辑出发,我们不但需要考虑配置文件的配置方法,还要遵循Web Service的相关规范,一行一行的编写,难免顾此失彼,既耗时也容易出错。
Web Service插件改变了这种情况,它使得Web Service的实现极其简单,大部分基础代码都可以由它帮你完成。它在提供端使程序员轻松的配置一些基本信息,就可以生成提供端代码。而在客户端,通过给插件一个WSDL文件便可以生成客户端代码。这种操作极大地减少了编码的工作量并且在最大程度上保证了java类和配置文件的一致性、同步性,提高了编码的质量,目前是国外非常流行的开发方式之一。Web Service插件对Web Service的Xfire框架有很好的支持,极大地提高了开发效率。
根据Web Service插件所提供的功能,我们将其分为两部分:Web Service提供端插件和Web Service客户端插件。Web Service提供端插件的功能为把一个普通的java文件转换为一个web服务,并自动生成它的配置文件。具体功能为:读取一个普通的java文件,用户根据插件UI信息配置相应数据项并可以根据发布信息接口修改模板,从而生成web服务的java类和配置文件。Web Service客户端插件的功能为解析WSDL文件,生成客户端代码,从而客户端可以对提供端进行访问。具体功能为:解析WSDL文件,用户根据WSDL文件信息接口修改模板,从而生成客户端代码。Web Service提供端插件和Web Service客户端插件分别针对WS-Security的三种安全模式给出相应的配置项,根据用户所选的模式和配置信息生成相应的代码和密钥。
Web Service提供端插件包括的模块有:解析java类及其方法的模块,根据java类及方法配置生成web服务的接口及配置文件的模块,根据用户选择的Web Service提供端的安全模式自动生成安全类、配置文件和密钥的模块。Web Service客户端插件包括的模块有:解析WSDL文件的模块,根据解析后WSDL文件的信息生成客户端代码的模块,根据用户选择的Web Service客户端的安全模式自动生成安全类、配置文件和密钥的模块。
3.2 Web Service插件的算法设计
(1)代码自动生成是由FreeMarker模板机制和我们编辑的代码生成算法完成的,由于FreeMarker是一个强大的模板引擎,所以我们采用它的模板机制,运用我们的算法就可以完成Web Service插件的代码生成。从而根据插件页面传入的信息就可以生成提供端和客户端的java类、xml文件、属性文件等。
具体算法如下:
s0:获取Web Service插件用户填入的Web Service配置信息,将其转换为值对象。
s1:初始化欲生成的文件的输出路径和各个模板路径。
s2:将Web Service配置信息值对象放入到Map中。
s3:循环每一个模板。
s31:将Map中的value和key放入到哈希表中。
s32:根据模板名将每个模板转换为FreeMarker的模板类。
s33:FreeMarker模板类将模板中的key与hash表中的key对应上,从而将与key对应的value值放入模板中相应位置。
s34:通过java.io.BufferedWriter将文本写入字符输出流并缓冲字符。
s35:将缓冲字符输出流转换为字符串,并根据文件名将文件写入。
s36:根据欲生成的文件的输出路径,生成该文件。
s37:根据文件全名作截取,如webservice.xml截取完为xml,从而判断文件类型。如果文件类型为java文件,则跳s38,如果文件类型为xml文件,则跳s39。
s38:java文件格式化。
s39:xml文件格式化。
(2)获取java类中的类名、方法名、方法参数和返回值等信息是我们利用了类反射机制和类装载机制。通过它实现了读取java类中的包名、类名、属性、各个方法的方法名、方法参数、方法返回值等,从而完成了解析java类及其方法的模块。
具体算法如下:
s0:传入Web Service提供端工程路径,创建类装载器。
s1:类装载器把Web Service提供端工程的java类型读入Java虚拟机中产生一个代表该类型的二进制数据流。解析这个二进制数据流为方法区的内部数据结构。?在堆上创建一个表示该类型的java.lang.Class类的实例。
s2:根据类反射机制,传入需要获取信息的类名,便可以获取java类中的任何信息。
4 Web Service插件的实现
根据Web Service插件的设计,我们实现了基于Eclipse的Web Service插件。如图2所示,为Web Service提供端插件的界面,通过在界面中输入Web Service提供端的基本信息和配置Web Service安全信息,便可以生成提供端接口、实现类、绑定文件、服务配置文件及安全文件等文件。如图3所示,为Web Service客户端插件的界面,通过在界面中输入WSDL文件路径及配置Web Service客户端安全信息,客户端插件便可以根据WSD文件的内容生成相应的接口、实现类等文件,根据配置的安全信息生成客户端安全文件等。
5 结束语
Web Service插件界面友好,风格统一,而且在Web Service提供端和客户端都提供了相应的插件。它可以方便的使应用程序跨平台和跨网络进行通信。这样不仅可以缩短开发周期,大大方便了用户的使用,还可以减少代码的复杂度,并增强整个应用程序的可维护性。应用必须在Eclipse平台中运行, 这是它的局限性。
参考文献:
[1]Vinoski,S..Web service references[J].IEEE internet computing,2005,9 (2):94-96.
[2]Dwight Deugo.Extending Eclipse[J].Application Development Trends,2003,10(6):63-64.
[3]Mike Mccullough.Developing Eclipse Plugins[J].Linux Journal,2006,(143):90-95.
[4]Eric Armstron. Java Web Service Modeling Ontology[M].Pearson Education,2003.
[5] Dumitru Roman,Uwe Keller,Holger Lausen. Web Service Modeling Ontology[J].Applied Ontology,2005,1(1):77-106.
[6]邵京平,智明,柳先辉.ASP平台上基于Web Service的插件技术的实现[J].计算机应用研究, 2005,12(5):90-92.
项目编号:长工大科合字第2007129。
(作者单位:吉林长春工业大学传媒学院)
【关键词】Eclipse Web Service Xfire 插件
1 引言
在现在的网络环境中,跨平台的可互操作性是近年来争相讨论的话题。Web Service正是这一时期的产物,它实现了跨防火墙的通信、异构平台的应用、企业应用集成、行业内部B2B的应用和强安全特性的应用。它的实现将会大大改变商业运做的模式和信息交流的风格。而Xfire是新一代的Web Service框架,它通过提供简单的API和支持标准协议,便可以开发面向服务的程序。
基于Eclipse的插件,近几年成为研究的热点和重点,因为Eclipse是一个开放的、通用的、可扩展的集成开发环境,而且它提供了一个用于开发插件的框架,通过开发相应的Eclipse插件,提高了项目的开发效率和质量。当前,已经出现了不少Eclipse插件,比如,Hibernate插件、HTML图形化插件等。但针对Web Service的插件目前还没有。我们开发了基于Eclipse的Web Service插件,它不但能简化开发过程,而且具有扩展能力强、使用方便、可靠性高等优点。
2 Web Service
Web Service是建立可互操作的分布式应用程序的新平台,它透过Web通讯协议及资料格式的开放标准来为应用程序提供服务,其中它的最基本协议包括:SOAP(简单对象访问协议,它规定了Web Service之间是怎样传递信息的。)、WSDL(Web Service描述语言)和UDDI(通用服务发布与发现规范,用于集中存放和查找WSDL描述文件,起着目录服务器的作用。)一个Web Service的生命周期,如图1所示:(1)提供端发布一个Web Service,使其能够接受和响应SOAP消息;(2)撰写一个WSDL文件用于描述此Web Service;(3)将此WSDL发布到UDDI上;(4)客户端从UDDI上搜索到发布的WSDL;(5)根据发布的WSDL,客户端可以编写程序。Web Service的安全性和保密性是非常重要的问题。WS-Security通过利用现有标准和规范来实现安全性,它提供了三种可选的Web Service安全模式:Username Token模式,Encrypt模式,Sign模式。
实现Web Service的框架有很多,但Xfire框架支持一系列Web Service的新标准,它通过提供简单的API和支持标准协议,便可以开发面向服务的程序,它消除了使用不同组件模型、操作系统与编程语言系统之间存在的差异, 使异类系统能够作为计算网络的一部分协同运行。
3 Web Service插件
3.1 Web Service插件的设计方案
Web Service包括两个部分:提供端和客户端。提供端基础代码包括服务xml、一个接口和它的实现类;客户端基础代码包括一个与提供端接口相同的接口,如果提供端发布了值对象,则有与提供端相同的值对象,如果提供端发布了复杂类型的绑定,则有与提供端相同的绑定文件。在最原始的配置文件及java类编写方式——手工编写时,从业务逻辑出发,我们不但需要考虑配置文件的配置方法,还要遵循Web Service的相关规范,一行一行的编写,难免顾此失彼,既耗时也容易出错。
Web Service插件改变了这种情况,它使得Web Service的实现极其简单,大部分基础代码都可以由它帮你完成。它在提供端使程序员轻松的配置一些基本信息,就可以生成提供端代码。而在客户端,通过给插件一个WSDL文件便可以生成客户端代码。这种操作极大地减少了编码的工作量并且在最大程度上保证了java类和配置文件的一致性、同步性,提高了编码的质量,目前是国外非常流行的开发方式之一。Web Service插件对Web Service的Xfire框架有很好的支持,极大地提高了开发效率。
根据Web Service插件所提供的功能,我们将其分为两部分:Web Service提供端插件和Web Service客户端插件。Web Service提供端插件的功能为把一个普通的java文件转换为一个web服务,并自动生成它的配置文件。具体功能为:读取一个普通的java文件,用户根据插件UI信息配置相应数据项并可以根据发布信息接口修改模板,从而生成web服务的java类和配置文件。Web Service客户端插件的功能为解析WSDL文件,生成客户端代码,从而客户端可以对提供端进行访问。具体功能为:解析WSDL文件,用户根据WSDL文件信息接口修改模板,从而生成客户端代码。Web Service提供端插件和Web Service客户端插件分别针对WS-Security的三种安全模式给出相应的配置项,根据用户所选的模式和配置信息生成相应的代码和密钥。
Web Service提供端插件包括的模块有:解析java类及其方法的模块,根据java类及方法配置生成web服务的接口及配置文件的模块,根据用户选择的Web Service提供端的安全模式自动生成安全类、配置文件和密钥的模块。Web Service客户端插件包括的模块有:解析WSDL文件的模块,根据解析后WSDL文件的信息生成客户端代码的模块,根据用户选择的Web Service客户端的安全模式自动生成安全类、配置文件和密钥的模块。
3.2 Web Service插件的算法设计
(1)代码自动生成是由FreeMarker模板机制和我们编辑的代码生成算法完成的,由于FreeMarker是一个强大的模板引擎,所以我们采用它的模板机制,运用我们的算法就可以完成Web Service插件的代码生成。从而根据插件页面传入的信息就可以生成提供端和客户端的java类、xml文件、属性文件等。
具体算法如下:
s0:获取Web Service插件用户填入的Web Service配置信息,将其转换为值对象。
s1:初始化欲生成的文件的输出路径和各个模板路径。
s2:将Web Service配置信息值对象放入到Map中。
s3:循环每一个模板。
s31:将Map中的value和key放入到哈希表中。
s32:根据模板名将每个模板转换为FreeMarker的模板类。
s33:FreeMarker模板类将模板中的key与hash表中的key对应上,从而将与key对应的value值放入模板中相应位置。
s34:通过java.io.BufferedWriter将文本写入字符输出流并缓冲字符。
s35:将缓冲字符输出流转换为字符串,并根据文件名将文件写入。
s36:根据欲生成的文件的输出路径,生成该文件。
s37:根据文件全名作截取,如webservice.xml截取完为xml,从而判断文件类型。如果文件类型为java文件,则跳s38,如果文件类型为xml文件,则跳s39。
s38:java文件格式化。
s39:xml文件格式化。
(2)获取java类中的类名、方法名、方法参数和返回值等信息是我们利用了类反射机制和类装载机制。通过它实现了读取java类中的包名、类名、属性、各个方法的方法名、方法参数、方法返回值等,从而完成了解析java类及其方法的模块。
具体算法如下:
s0:传入Web Service提供端工程路径,创建类装载器。
s1:类装载器把Web Service提供端工程的java类型读入Java虚拟机中产生一个代表该类型的二进制数据流。解析这个二进制数据流为方法区的内部数据结构。?在堆上创建一个表示该类型的java.lang.Class类的实例。
s2:根据类反射机制,传入需要获取信息的类名,便可以获取java类中的任何信息。
4 Web Service插件的实现
根据Web Service插件的设计,我们实现了基于Eclipse的Web Service插件。如图2所示,为Web Service提供端插件的界面,通过在界面中输入Web Service提供端的基本信息和配置Web Service安全信息,便可以生成提供端接口、实现类、绑定文件、服务配置文件及安全文件等文件。如图3所示,为Web Service客户端插件的界面,通过在界面中输入WSDL文件路径及配置Web Service客户端安全信息,客户端插件便可以根据WSD文件的内容生成相应的接口、实现类等文件,根据配置的安全信息生成客户端安全文件等。
5 结束语
Web Service插件界面友好,风格统一,而且在Web Service提供端和客户端都提供了相应的插件。它可以方便的使应用程序跨平台和跨网络进行通信。这样不仅可以缩短开发周期,大大方便了用户的使用,还可以减少代码的复杂度,并增强整个应用程序的可维护性。应用必须在Eclipse平台中运行, 这是它的局限性。
参考文献:
[1]Vinoski,S..Web service references[J].IEEE internet computing,2005,9 (2):94-96.
[2]Dwight Deugo.Extending Eclipse[J].Application Development Trends,2003,10(6):63-64.
[3]Mike Mccullough.Developing Eclipse Plugins[J].Linux Journal,2006,(143):90-95.
[4]Eric Armstron. Java Web Service Modeling Ontology[M].Pearson Education,2003.
[5] Dumitru Roman,Uwe Keller,Holger Lausen. Web Service Modeling Ontology[J].Applied Ontology,2005,1(1):77-106.
[6]邵京平,智明,柳先辉.ASP平台上基于Web Service的插件技术的实现[J].计算机应用研究, 2005,12(5):90-92.
项目编号:长工大科合字第2007129。
(作者单位:吉林长春工业大学传媒学院)