CN102811257B - 一种网络服务自动发布和组合方法 - Google Patents

一种网络服务自动发布和组合方法 Download PDF

Info

Publication number
CN102811257B
CN102811257B CN201210262937.7A CN201210262937A CN102811257B CN 102811257 B CN102811257 B CN 102811257B CN 201210262937 A CN201210262937 A CN 201210262937A CN 102811257 B CN102811257 B CN 102811257B
Authority
CN
China
Prior art keywords
service
file
catalogue
issue
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210262937.7A
Other languages
English (en)
Other versions
CN102811257A (zh
Inventor
张迎周
许晓曼
符炜
陈丽洁
郑梁须
朱宪庭
张卫丰
周国强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Post and Telecommunication University
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201210262937.7A priority Critical patent/CN102811257B/zh
Publication of CN102811257A publication Critical patent/CN102811257A/zh
Application granted granted Critical
Publication of CN102811257B publication Critical patent/CN102811257B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明给出了一种基于Axis2的网络服务自动发布和组合方法,包含获取Axis2路径、生成build.xml文件、获取源文件、生成services.xml文件、代码重写、编译代码、打包发布、组合、二次发布等功能,基本上可以归类为获取初始信息、代码重写、服务的自动发布以及服务的组合发布四个模块。该方法从Axis2的Web服务发布过程出发,对发布以及组合过程进行分析,构建一个可以只需简单输入必要信息就可以发布Web服务并进行相应组合进而二次发布的软件。故可方便地发布并组合Web服务,以达到减少人工操作的目的。最终目的是开发一种基于Axis2的Web服务自动发布组合方法。

Description

一种网络服务自动发布和组合方法
技术领域
本发明给出了一种基于下一代Web服务核心支援引擎的Web服务自动发布组合方法的设计方案,主要解决该支援引擎的Web服务发布中所涉及到的编程问题以及发布后服务的组合及二次发布问题,属于Web服务的组合发布领域。
背景技术
随着计算机网络跨越式发展和分布式系统的不断创新推进,由于Web服务(Web Services)成功结合了过去的设计要素,采用概念和技术创新的设计理念和设计元素,现在已被计算机界广泛认可并成为新的研究热点。根据W3C(World Wide Web Consortium,万维网联盟)的定义,Web服务是一种面向服务架构的技术,通过标准的Web协议提供服务,服务使用者可以组合集成服务到自己的应用程序中,避免了重复功能的再次开发,节约了企业成本,并且保证了不同平台的应用服务具有互操作性。
Web服务是用于创建开发分布式系统的构件,并可以使公司和个人迅速且廉价地向全世界提供他们的数字资产。Web服务可以通过集合其他Web服务以提供一套更高级的功能。这就是Web服务在组合上存在的独有的优势。Web服务的力量不在于它本质上能做什么,而是在于它将会大幅度的简化许多当前必需的复杂的编程任务。不论两个还是多个应用程序,或商业流程,或需要交互的批量数据,Web服务都将会有用武之地。
实际上的Web服务就是一些功能或服务接口,是一种可以通过Internet发布部署并调度使用的应用程序。Web服务采用面向服务的体系结构,定义了服务提供者、服务请求者、服务代理三个角色以及发布、查找、绑定三个操作。
服务提供者使用WSDL(Web Services Description Language,Web服务描述语言)来描述和定义那些可以通过网络来访问的应用程序的功能,在服务代理中发布这些服务的信息,使其可以被其他应用访问、接收和调用。服务请求者通过一个或者多个服务代理寻找他们所需的Web服务,下载服务的WSDL文档,并且根据服务定义来绑定(Bind)和调用(Invoke)服务提供者提供的Web服务。服务代理者列出服务提供者发布的Web服务,允许服务请求者查询服务代理中的服务。服务代理在Web服务体系中扮演一个服务提供者和服务请求者的中间媒介的角色。
Web服务的运作过程正是这三个角色构建的,它们主要是通过Web服务发布、发现和绑定这三个动作来完成服务在网络中的被使用。其中发布操作是服务提供者与服务代理之间的交互操作,发布的具体细节取决于服务代理是如何被实施的。目前,在Web服务发布时,一般有3种方法:1、Web服务器的管理员自己编写发布函数,将Web服务的接口暴露在网络中;2、使用Microsoft公司的UDDI(Universal Description Discovery and Integration,通用描述、发现与集成服务)服务注册中心进行服务的注册和发布;3、使用Apache的tomcat下的Axis2引擎(一种Web服务的核心支援引擎)进行Web服务发布。
但是发布单个的Web服务能够提供的功能有限,为了能更加充分地利用共享的Web服务,有必要将共享的Web服务组合起来,提供更为强大的服务功能,从而加快系统开发的速度,快速满足用户需求。面对这一问题,国内外研究人员都在竭力进行优化Web服务选择以及组合的研究。
就目前国内外的研究情况来看,几乎可以确定Web服务是下一代分布式系统的核心部分。当然如何让各个公司在使用Web服务框架的时候能够简便快捷的发布Web服务并整合以往服务也成为了一个重要的任务,只有便捷的发布方法以及组合方案才能让公司或者企业在使用Web服务时省时省力,因此在Web服务发展的道路上,还需要制定出更多的标准和技术来对Web服务的各种流程(包括发布流程、发现流程以及组合流程等等)进行更严格的管理,这样才能让广大的用户越来越喜欢用Web服务,但上述的一些目前Web服务存在的问题并不影响Web服务在网络分布式应用系统中的地位,Web服务的应用前景还是很广泛的。
参考文献:
[1] Web-Service website, 2009. http://en.wikipedia.org/wiki/Web_service.
[2] ZENG Liang-zhao,BENATALLAH B,NGU A H H,et al. QoS-aware middleware for Web services composition. IEEE Trans on Software Engineering,2004,30( 5) : 311-327.
发明内容
技术问题:本发明的目的是提出一种基于Axis2的Web服务自动发布组合方法设计方法。该方法从Axis2的Web服务发布组合过程出发,对发布以及组合过程进行分析,构建一个可以只需简单输入必要信息就可以发布Web服务并进行相应组合的软件。故可方便地发布并组合Web服务,以达到减少人工操作的目的。最终目的是开发一种基于Axis2的Web服务自动发布组合方法。
技术方案:本发明结合Axis2这样一个Web服务发布平台,使用Apache Ant工具对源程序进行编译并运用Haskell语言对发布及组合流程中使用到的功能函数进行实现,最后使用基于GTK(GIMP Toolkit)的Haskell库对界面进行设计。其中Axis2是安装在Apache Tomcat下的一个应用模块,是目前比较流行的Web服务引擎。使用Axis2,用户可以很方便的对Java编写的Web服务进行发布。Axis2作为Axis的下一代产品,在实现过程、技术支持以及用户使用上都比Axis更简洁、全面以及方便。Axis2具有如下特点:
1)采用名为 AXIOM(AXIs Object Model)的新核心 XML(Extensible Markup Language,可扩展标记语言)处理模型,利用新的XML解析器提供的灵活性按需构造对象模型。 
  2)支持不同的消息交换模式。目前Axis2支持三种模式:In-Only、Robust-In和In-Out。In-Only消息交换模式只有SOAP(Simple Object Access Protocol,简单对象访问协议)请求,而不需要应答;Robust-In消息交换模式发送SOAP请求,只在出错的情况下才返回应答;In-Out消息交换模式总是存在SOAP请求和应答。
  3)提供阻塞和非阻塞客户端API(Application Programming Interface,应用程序编程接口)。
  4)支持内置的 Web服务寻址 (WS-Addressing) 。
  5)灵活的数据绑定,可以选择直接使用 AXIOM,使用与原来的 Axis 相似的简单数据绑定方法,或使用 XMLBeans、JiBX 或 JAXB 2.0 等专用数据绑定框架。
  6)新的部署模型,支持热部署。
  7)支持HTTP(hypertext transport protocol,超文本传送协议 ),SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),JMS(Java Message Service,Java消息服务),TCP(Transmission Control Protocol,传输控制协议)。
8)支持REST (Representational State Transfer,表述性状态转移)。
Haskell语言是一种纯函数式编程语言,它是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell语言的最重要的两个应用是Glasgow Haskell Compiler (GHC)和Hugs(一个Haskell语言的编译器)。本语言的特式是利用很简单的叙述就可以完成链表、矩阵等数据结构。
本发明的网络服务自动发布和组合方法自动发布网络服务并进行用户需要的组合,引用哈斯凯尔这种纯函数式编程语言来进行自动发布组合的编程工作,该方法包含如下步骤:
1)在使用该支援引擎时要用到一个命名为“services”的可扩展语言标识文档进行发布,它要求java源程序必须有包定义,因此首先使用parse函数分析java源程序,得到一个哈斯凯尔中间类型即这个java文件的包定义;
2)根据用户提供的信息生成一个可扩展标识语言文档配置信息,由于对源代码进行编译时需要使用到另一种整洁工具,而使用这个工具时,需要这样一个可扩展语言标识文档的工具配置文件,必须先写出这个文档的配置文件,配置的信息包括源文件目录,该网络服务核心支援引擎目录以及要发布的java方法,特别地,在生成这个文档之前专门定义了三个类型来进行信息的存储,分别命名为ServiceInfo, ServicesXMLInfo, BuildInfo;
3)根据用户提供的不需要发布的方法列表,并使用代码重写技术对源代码进行修改,屏蔽不需要发布的方法;由于在该支援引擎中,默认发布的所有方法的关键字是“公开”,如果将不要被发布的方法的修饰词修改为“非公开”,即可屏蔽掉不需要发布的方法进而达到选择性发布方法的目的;
4)分析步骤2)中生成的可扩展标识语言文档文件,步骤2)中专门定义的三种类型中的第一种类型是用来记录服务相关信息的,根据该类型记录的相关信息获得java源代码目录以及发布所用的网络服务核心支援引擎的目录;
5)生成命名为“services”的可扩展语言标识文件,在这一步骤中,编写了一个新的函数命名为genServicesXMLInfoFromFile ,根据这个函数来得到步骤2)中定义的三种类型中的第二种类型,这种类型记录了生成这个标识文件所需的信息,进而根据记录的信息来生成所需的文件,并新建META-INF目录,将生成的文件放入到这个目录下;
6)编译代码重写技术修改过的java源代码。在自动发布流程中,在编译之前,定义了两个变量来保存源文件目录以及编译后存放的目录,编译时和该支援引擎在编译源文件的时候一样调用编译工具javac命令来进行编译,只是由于javac命令有很多参数,因此在执行编译之前,定义了一个javac的哈斯凯尔类型,用来记录编译时所用的参数;
7)将步骤6)中编译后的.class文件所在目录和步骤5中的META-INF目录进行使用jarArchive这样一个用来压缩的函数来压缩打包,生成后缀名为“.arr”的文件,并将这个文件移动到该支援引擎的目录下,启动互联网应用服务器Tomcat后,即可实现服务的发布;
8)将上述7个步骤中定义的接口函数进行组合,用一个runPublishAuto函数去自动执行它们,就可以实现互联网服务的自动发布了;
9)在互联网服务自动发布的同时建立一个互联网服务的集合,设置每次发布的服务自动存入该服务集合中,并给出可供用户查看的服务的列表,该列表中包含历次发布的服务名称,服务的输入输出以及每个服务的服务质量参数;
10)当需要进行服务的组合时,需要用户输入已知的信息即输入参数,接着输入所需的输出参数以及对该服务服务质量的需求,软件自动调用服务列表根据其中的输入输出参数以及服务质量参数值来进行相应的组合配对;
11)若组合成功则再一次调用该支援引擎的自动发布功能将该服务组合发布出去,若没有组合成功那么返回给用户并给出原因,即无候选组合服务配对或候选的服务组合达不到用户对服务质量的需求,若用户需要那么给出最相近的一组服务组合相关参数数据,由用户决定是否发布。
有益效果:作为Web服务发布组合方法,本发明基本上实现了Web服务的自动发布组合功能。具有以下的一些特点和创新之处:
Web服务的自动发布技术:该软件使用了Haskell语言来编写发布过程中需要使用到的各项函数及说明,它不同于传统的Axis2发布软件,不需要使用者编写发布中用到的xml文件,也不需要用户自己使用命令对文件进行打包以及将压缩好的文件移动至指定目录。
Web服务的自动组合及二次发布技术:该软件使用了Haskell语言来编写组合过程中需要使用到的各项函数及说明,它不同于传统的Axis2发布软件,不在发布的基础上添加了组合以及二次发布的内容,只需用户简单地输入输入输出参数以及QoS参数限制就可以根据已有的Web服务自动组合进而进行二次发布。
Haskell语言:使用Haskwell语言来实现自动发布以及组合程序中的功能函数。Haskell程序简洁、易于理解、无内核转储、重用性好、具有强粘合力。Haskell被称为惰性的、纯函数式编程语言。它提供了高阶函数、非严格定义、静态的多态类型、模式匹配模块系统、IO系统;它是以数学逻辑为基础,基于λ演算的函数式语言。Haskell语言采用单子(Monad)技术保证其纯性,将可能的副作用(如IO)模块封装在一个单子内。Haskell程序易于维护,因为其代码简洁清晰,严格控制副作用,使用Haskell语言可以写出更可靠的代码。
附图说明
图1是本发明的Web服务发布软件的整体流程框图。
图2是本发明继发布流程后自动组合软件的整体流程框图。
具体实施方式
在本专利中,我们基于Axis2的Web服务发布流程使用Haskell语言对发布流程中用到的功能函数以及组合过程中的核心算法进行实现,进而得到我们需要的服务的自动发布,
首先执行自动发布之前,用户需要提供服务名称,服务源代码所在路径,Axis2所在的目录以及需要发布的Java方法名等信息。总结起来改进Axis2使其可以进行Web服务的自动发布,主要有如下几个步骤:
步骤1:首先使用parse函数分析java源程序,得到一个Haskell中间类型即这个Java文件的package定义;
步骤2:根据用户提供的信息生成一个build.xml配置信息,配置的信息包括源文件目录,Axis2目录以及要发布的Java方法。特别地,在生成build.xml之前本项专利中专门定义了三个类型来进行信息的存储,分别是ServiceInfo, ServicesXMLInfo, BuildInfo;
步骤3:根据用户提供的不需要发布的方法列表,并使用代码重写技术对源代码进行修改,屏蔽不需要发布的方法。;
步骤4:分析步骤2中生成的build.xml文件,根据记录服务相关信息的ServiceInfo类型,获得Java源代码目录以及Axis2的目录;
步骤5:根据ServiceXMLInfo记录的信息来生成services.xml,并新建META-INF,将services.xml放入到该目录下;
步骤6:编译代码重写技术修改过的Java源代码,编译时同Axis2在编译源文件的时候一样调用javac命令进行编译;
步骤7:将步骤6中编译后的class文件所在目录和步骤5中的META-INF目录进行使用jarArchive函数来压缩打包,生成后缀名为“.arr”的文件,并将这个文件移动到Axis2的目录下,启动Tomcat后,即可实现服务的发布;
步骤8:将上述7个步骤中定义的接口函数进行组合,用一个runPublishAuto函数去自动执行它们,就可以实现Web服务的自动发布了;
在自动发布一定数量服务后,用户可以根据自身的需求来进行相应的组合服务及发布,步骤如下:
步骤9:在Web服务自动发布的同时建立一个Web服务的集合,设置每次发布的服务自动存入该服务集合中,并给出可供用户查看的服务的列表,该列表中包含历次发布的服务名称,服务的输入输出以及每个服务的QoS(Quality of Service,服务质量)参数;
步骤10:当需要进行服务的组合时,需要用户输入已知的信息即输入参数,接着输入所需的输出参数以及对该服务QoS的需求,软件自动调用服务列表根据其中的输入输出参数以及QoS参数值来进行相应的组合配对;
步骤11:若组合成功则再一次调用Axis2的自动发布功能将该服务组合发布出去,若没有组合成功那么返回给用户并给出原因,例如:无候选组合服务配对或候选的服务组合达不到用户对QoS的需求,若用户需要那么给出最相近的一组服务组合相关参数数据,由用户决定是否发布。
实例:
本发明中基于Axis2的Web服务自动发布组合流程包含获取Axis2路径、生成build.xml文件、获取源文件、生成services.xml文件、代码重写、编译代码、打包发布、组合、二次发布等功能,基本上可以归类为获取初始信息、代码重写、服务的自动发布以及服务的组合发布四大部分。图1给出了本发布软件的一个整体的流程框图,描述了各个模块的作用以及模块之间的联系。下面的内容是对本发明中的Web服务发布组合各个功能在实现上的详细描述。
1.获取初始信息
步骤1,使用parse函数对Java源代码进行分析,以此来得到一个简单且易处理的Haskell中间类型(注释:即这个Java文件的package定义):
在这个函数的定义中,使用了readFile函数对源文件进行内容的读取,unsafePerformIO对读取后的内容进行提取,parseCompilationUnit则是对读取的内容进行分析,操作符号‘.’实际上是Haskell语言的一个函数组合函数,表示将后一函数的输出作为前一函数的输入。在这里,使用‘.’将readFile,unsafePerformIO和parseCompilationUnit这三个函数进行组合。
步骤2,在生成build.xml之前,我们自定义了3个类型进行信息的储存。分别是ServiceInfo, ServicesXMLInfo, BuildInfo。ServiceInfo记录服务相关信息,ServicesXMLInfo记录生成的services.xml的相关信息,而BuildInfo记录了生成build.xml时所需要的信息,同时还定义了一些处理这些类型的函数:
genServicesXMLInfo ::ServiceInfo-> ServicesXMLInfo
genBuildInfo  :: Build -> BuildInfo
parseBuild  :: FilePath -> Build
genServiceInfo  :: Build -> ServiceInfo
上述几个函数的声明是Haskell语言声明函数的格式。在符号‘::’后面的最后一个类型是返回类型,前面的都是参数类型。例如genServicesXMLInfo,其返回类型是ServicesXMLInfo, 参数类型是ServiceInfo。
2.代码重写
步骤1,根据第一个模块中步骤2记录的要被发布的方法,修改源代码,将代码中不要求被发布的方法进行屏蔽。在Axis2中,默认发布的是所有关键字是public的方法,如果将不要被发布的方法的修饰词修改为private,这样就可以实现服务的选择性发布,这样就大大提高了axis2发布服务的灵活性。为了实现这样的功能,我们编写了如下的函数进行处理:
modifyJFile  :: [MethodName] -> FilePath -> String
这个函数的输入是要被发布的操作名称([MethodName])和Java源文件的目录(FilePath),返回类型是修改后的Java代码的内容。这个函数在执行的时候,首先是分析Java文件,获取所有方法名称的列表,然后将要发布的服务从这个列表中删去得到一个新的列表,接着将这个新的列表中的方法的修饰词用函数checkModifier进行修改,checkModifier函数的作用是如果不需要被发布的方法的修饰词是public,则更改为private,如果是private,就保持不变。
3.服务的自动发布
步骤1,对在第一个模块步骤2中生成的ServiceInfo类型进行分析,使用了getSrcPath,getAxis2Path分别从用户提供的信息中获取源文件所在目录以及Axis2所在的目录。
步骤2,需要生成services.xml文件。第一个模块步骤2中定义的ServicesXMLInfo就记录了生成services.xml文件所需要的信息。在这一步骤中,编写了生成ServicesXMLInfo的函数,使用parseBuild,genServiceInfo和genServicesXMLInfo这三个函数进行组合,成为一个新的函数,定义为:           genServicesXMLInfoFromFile  =
genServicesXMLInfo  . genServiceInfo . parseBuild
使用这个函数得到ServicesXMLInfo类型后,将ServicesXMLInfo类型转化为字符串,然后保存到services.xml中即可实现services.xml文件的生成。
    步骤3,对源文件进行编译。在编译之前,定义了两个变量来保存源文件目录以及编译后存放的目录,定义如下:
srcD :: FilePath
srcD = "." </> "src"
classD :: FilePath
classD = "."
srcD是指Java源程序目录,定义为当前目录下的src目录,classD是指生成class文件所在位置,定义为当前目录,表示编译生成的.class文件在当前目录。
Axis2在编译源文件的时候,仍是使用JDK的javac命令,在我们的自动发布流程中,同样是调用javac命令进行编译。Javac命令有很多参数,因此在执行编译之前,定义了一个Javac的Haskell类型,用来记录编译时所用的参数:
jCompile  :: FilePath -> FilePath -> J.Javac
jCompile  srcd classD = J.javac {
               J.deprecation = True,
               J.directory = Just classD,
               J.sourcepath = [srcd]
}
上面的代码定义了一个jCompile函数,用来生成javac的命令,例如将deprecation设置为True,directory的值设置为参数classD,sourcepath的值设置为[srcd]。有了jCompile函数,就可以写一个build函数,用来调用javac命令进行java文件的编译,具体代码如下:
build  :: FilePath -> FilePath -> IO ExitCode
build  srcd classD =(jCompile srcd classD) ->- [srcd]
->-这个函数的作用表示对跟在其后的列表中的每个元素都做这个符号之前的操作。用在build函数中表示对[srcd]中的所有源文件进行编译。这样的话,编译阶段的函数已经完成,期间还用到了许多辅助函数,这里就不一一列出。
步骤4,对步骤2中生成的services.xml文件和步骤3中的编译后的class文件进行压缩打包。软件中使用了一个用于压缩的函数。
jarArchive  :: [FilePath] -> FilePath -> IO ()
jarArchive  dires result =
     writeArchive (zip (repeat ".") dires) derectpredict [OptVerbose, OptRecursive] result
derect  :: RecursePredicate
derect  = not' System.Build.hasExtension
predict  :: FilterPredicate
predict  = filePather isFile
jarArchive函数的第一个参数是[FilePath],表示的是一系列待压缩的文件,而第二个参数FilePath是压缩后存放的路径。在jarArchive函数的定义中使用了一个writeArchive函数。
writeArchive函数的第一个参数zip (repeat ".") dires就是表示把当前目录下的所有目录都压缩。Derect是RecursionPredicate类型,表示递归压缩,predict是FilterPredicate类型,表示的如果遇到目录,则递归压缩目录,如果遇到文件,则停止压缩,[OptVerbose, OptRecursive]是[ZipOption]类型,分别表示递归压缩并打印压缩信息。上面内容就是关于压缩程序的代码与实现。压缩之后程序会进行自动打包,然后只要将打包好的“.aar”文件放到Axis2目录下就可以实现服务的发布了。当然这个过程也是程序完成的,不需要用户自己去将文件放入到那个目录中。
步骤5,将上述几个模块中定义的接口函数进行组合,用一个runPublishAuto函数去自动执行它们,就可以实现Web服务的自动发布了。
4.服务的自动组合发布
步骤1,在Web服务自动发布的同时建立一个Web服务的集合,设置每次发布的服务自动存入该服务集合中,并给出可供用户查看的服务的列表,该列表中包含历次发布的服务名称,服务的输入输出以及每个服务的QoS参数;
步骤2,当需要进行服务的组合时,需要用户输入已知的信息即输入参数,接着输入所需的输出参数以及对该服务QoS的需求,软件自动调用服务列表根据其中的输入输出参数以及QoS参数值来进行相应的组合配对;
步骤3,若组合成功则再一次调用Axis2的自动发布功能将该服务组合发布出去,若没有组合成功那么返回给用户并给出原因,例如:无候选组合服务配对或候选的服务组合达不到用户对QoS的需求,若用户需要那么给出最相近的一组服务组合相关参数数据,由用户决定是否发布。

Claims (1)

1.一种网络服务自动发布和组合方法,其特征在于该方法自动发布网络服务并进行用户需要的组合,引用哈斯凯尔纯函数式编程语言进行自动发布组合的编程工作,该方法包含如下步骤:
1)在使用名为Axis2的网络服务支援引擎时用到一个命名为“services”的可扩展语言标识文档进行发布,它要求java源程序必须有包定义,因此首先使用parse函数分析java源程序,得到一个哈斯凯尔中间类型即这个java文件的包定义;
2)根据用户提供的信息生成一个可扩展标识语言文档配置信息,先写出这个文档的配置文件,配置的信息包括源文件目录,网络服务核心支援引擎的相关文件所在的目录以及要发布的java方法,在生成这个文档之前定义三个类型来进行信息的存储,分别命名为:第一种类型ServiceInfo,第二种类型ServicesXMLInfo,第三种类型BuildInfo;
3)根据用户提供的不需要发布的方法列表,并使用代码重写技术对源代码进行修改,屏蔽不需要发布的方法;
4)分析步骤2)中生成的可扩展标识语言文档文件,步骤2)中定义的三种类型中的第一种类型用于记录服务相关信息,根据该类型记录的相关信息获得java源代码目录以及发布所用的网络服务核心支援引擎的目录;
5)生成命名为“services”的可扩展语言标识文件,在这一步骤中,编写一个新的函数命名为genServicesXMLInfoFromFile,根据这个函数得到步骤2)中定义的三种类型中的第二种类型,这种类型记录了生成这个标识文件所需的信息,进而根据记录的信息生成所需的文件,并新建META-INF目录,将生成的文件放入到这个目录下;
6)编译代码重写技术修改过的java源代码,在自动发布流程中,在编译之前,定义两个变量来保存源文件目录以及编译后存放的目录,编译时和该支援引擎在编译源文件时一样调用编译工具javac命令来进行编译;
7)将步骤6)中编译后的.class文件所在目录和步骤5)中的META-INF目录使用jarArchive来压缩打包,生成后缀名为“.arr”的文件,并将这个文件移动到该支援引擎的目录下,启动互联网应用服务器Tomcat后,即可实现服务的发布;
8)将上述7个步骤中定义的接口函数进行组合,用一个runPublishAuto函数去自动执行,实现互联网服务的自动发布;
9)在互联网服务自动发布的同时建立一个互联网服务的集合,设置每次发布的服务自动存入该服务集合中,并给出可供用户查看的服务的列表,该列表中包含历次发布的服务名称,服务的输入输出以及每个服务的服务质量参数;
10)当需要进行服务的组合时,需要用户输入已知的信息即输入参数,接着输入所需的输出参数以及对该服务的服务质量需求,软件自动调用服务列表根据其中的输入输出参数以及服务质量参数值来进行相应的组合配对;
11)若组合成功则再一次调用该支援引擎的自动发布功能将该服务组合发布出去,若没有组合成功,返回给用户并给出原因,即无候选组合服务配对或候选的服务组合达不到用户对服务质量的需求,若用户需要,给出最相近的一组服务组合相关参数数据,由用户决定是否发布。
CN201210262937.7A 2012-07-27 2012-07-27 一种网络服务自动发布和组合方法 Expired - Fee Related CN102811257B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210262937.7A CN102811257B (zh) 2012-07-27 2012-07-27 一种网络服务自动发布和组合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210262937.7A CN102811257B (zh) 2012-07-27 2012-07-27 一种网络服务自动发布和组合方法

Publications (2)

Publication Number Publication Date
CN102811257A CN102811257A (zh) 2012-12-05
CN102811257B true CN102811257B (zh) 2015-06-17

Family

ID=47234830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210262937.7A Expired - Fee Related CN102811257B (zh) 2012-07-27 2012-07-27 一种网络服务自动发布和组合方法

Country Status (1)

Country Link
CN (1) CN102811257B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105338010B (zh) * 2014-06-23 2019-04-19 青岛海尔智能家电科技有限公司 用于设备操作的方法及虚拟服务系统
CN107145367A (zh) * 2017-04-18 2017-09-08 北京思特奇信息技术股份有限公司 一种用于前端开发的可视化发布方法及系统
CN107769974B (zh) * 2017-10-30 2020-08-21 浪潮通用软件有限公司 一种服务发布方法及装置
CN109725910A (zh) * 2018-09-12 2019-05-07 网联清算有限公司 应用程序的标准化发布方法、发布装置和发布系统
CN111124485B (zh) * 2019-12-20 2023-03-10 成都互诚在线科技有限公司 一种基于中间语言的形式化规约语言简化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101382893A (zh) * 2008-10-10 2009-03-11 清华大学 一种基于Web服务的构件在线组装方法
CN101840334A (zh) * 2010-04-16 2010-09-22 中国电子科技集团公司第二十八研究所 一种软件构件服务化封装方法
CN101957758A (zh) * 2010-10-14 2011-01-26 上海普元信息技术股份有限公司 面向服务的架构应用系统中实现Web Service快速发布的方法
CN102323884A (zh) * 2011-09-07 2012-01-18 山东中创软件工程股份有限公司 一种多Web服务发布的方法及Web服务容器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404188B2 (en) * 2003-12-18 2008-07-22 Microsoft Corporation Method and software for publishing a business process orchestration as a web service

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101382893A (zh) * 2008-10-10 2009-03-11 清华大学 一种基于Web服务的构件在线组装方法
CN101840334A (zh) * 2010-04-16 2010-09-22 中国电子科技集团公司第二十八研究所 一种软件构件服务化封装方法
CN101957758A (zh) * 2010-10-14 2011-01-26 上海普元信息技术股份有限公司 面向服务的架构应用系统中实现Web Service快速发布的方法
CN102323884A (zh) * 2011-09-07 2012-01-18 山东中创软件工程股份有限公司 一种多Web服务发布的方法及Web服务容器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Haskell语言的构件化服务组合技术的研究;伍明钰;《中国优秀硕士学位论文全文数据库信息科技辑》;20120415;全文 *
基于程序切片和Web构件的语义Web服务组合;王伟;《中国优秀硕士学位论文全文数据库信息科技辑》;20120715;全文 *

Also Published As

Publication number Publication date
CN102811257A (zh) 2012-12-05

Similar Documents

Publication Publication Date Title
EP3433769B1 (en) Composition of pattern-driven reactions in real-time dataflow programming
Grassi et al. Filling the gap between design and performance/reliability models of component-based systems: A model-driven approach
US8589594B2 (en) Programmatic management of software resources in a content framework environment
US6985939B2 (en) Building distributed software services as aggregations of other services
US20030055624A1 (en) Dynamic, real-time integration of software resources through services of a content framework
CN102811257B (zh) 一种网络服务自动发布和组合方法
CN104731606B (zh) 基于识别抓取技术实现企业应用集成管理的系统及方法
Bennara et al. An approach for composing restful linked services on the web
CN103164476A (zh) 一种bi应用元数据描述文件的执行方法和装置
Sun et al. Scalable saas-based process customization with casewalls
Xiu et al. Change management of service-based business processes
Zhang et al. Representation of Petri net with OWL DL ontology
Apel et al. Toward a knowledge model focusing on microservices and cloud computing
Fabra et al. BPEL2DENEB: translation of BPEL processes to executable high-level Petri nets
Singh et al. Building Microservices with Micronaut®: A quick-start guide to building high-performance reactive microservices for Java developers
Mulye et al. A semantic template based designer for web processes
Silcher et al. A novel approach to product lifecycle management based on service hierarchies
El-Ghareeb et al. Aligning service oriented architecture and business process management systems to achieve business agility
Ismaili et al. Web services research challenges, limitations and opportunities
Garcia et al. The implementation experience of an advanced service repository for supporting service-oriented architecture
US9235382B2 (en) Input filters and filter-driven input processing
Yang Application of SOA and web service in implementing heterogeneous system integration
Qing-rui et al. Research of using SOA build enterprise application integration strategy
Barnickel et al. Semantic System Integration-Incorporating Rule based Semantic Bridges into BPEL Processes.
Bauler et al. Implementing a Service-Oriented Architecture for Small and Medium Organisations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20121205

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000213

Denomination of invention: Automatic publication and combination method for Web service

Granted publication date: 20150617

License type: Common License

Record date: 20161118

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000213

Date of cancellation: 20180116

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150617

Termination date: 20180727