基于WSO2Stratos的企业级应用开发方法【专利摘要】本发明提供了基于WSO2?Stratos的企业级应用开发方法,针对目前基于Struts、Spring、Hibernate的企业级应用开发中存在的缺点,本发明提出了基于构件的企业级应用开发方法。为了将该开发方式融入到WSO2?Stratos中作为一种应用解决方案,首先基于Hadoop设计了一个分布式存储系统,用来进行构件的存储;接着为了更好的管理基于构件开发的开发者,提取出WSO2?Stratos中用户身份认证管理服务,将其跟Hadoop分布式存储系统结合;最后对WSO2?Stratos对外提供的DeveloperStudioIDE进行功能扩展,向基于构件开发的开发者提供统一的开发向导。该设计方法为向WSO2?Stratos中融入更多的应用集成解决方案提出了思路。【专利说明】基于WS02Stratos的企业级应用开发方法【
技术领域:
】[0001]本发明属于基于PaaS(平台即服务)平台的企业级应用开发【
技术领域:
】,特别是提供一种基于WS02(领先的开源S0A解决方案提供者)Stratos(WS0公司提供的云平台)的企业级应用开发设计方法。【
背景技术:
】[0002]WS02Stratos是一个开源的PaaS平台,它主要为企业级应用开发提供基于云的解决方案(如图1)。目前WS02Stratos对外提供了APIManager、ApplicationServer、BusinessActivityMonitor等十六种服务组件,每种服务组件都会负责提供特定的功能,而所有的服务组件又通过WebService进行相互通信,最终由所有这些服务组件组成了WS02Stratos平台,WS02Stratos整体架构如图1。WS02Stratos作为一个PaaS平台对外提供的解决方案,都是通过组合不同的服务组件来实现。[0003]在WS02Stratos平台架构图中,Carbon(WS02公司产品的底层支撑平台)作为一个核心组件,它为上层的服务组件提供了功能实现方式。因为Carbon是利用的OSGi(面向Java的动态模型系统技术)实现,而OSGi先天的优势就是具有动态可扩展性,所以本发明可以看到WS02Stratos平台中会有多种多样的服务组件,而且随着更多业务需求的提出,可以往WS02Stratos平台中加入针对这些业务需求所需的服务组件,从而不断的扩大该平台功能。[0004]目前大部分中小型企业在进行应用开发时,都会在SSH框架的基础上进行开发,而且创建的项目都是普通的Web项目,项目完成后直接部署到Web服务器中进行运行。这种开发方式的好处是迅速、效率高;但是企业不可能仅仅只是开发一个项目,当面临新的业务需求时,如果采取上述同样的方式,将会要重新开发一个全新的Web项目。这样就有可能出现重复造轮子的现象,当项目越来越多时,这种弊病将会越明显。[0005]针对上述开发方式的缺点,提出了基于构件的开发方式。每个构件具有"高内聚、低耦合"的特点,它们都将独立完成一种特定的功能,并且能够对外提供该种功能的服务。所以进行应用开发时,只需要组合多个构件,就能完成一个项目的搭建。这种开发方式最大的一个优点是:可以复用已有的功能模块。企业只需要管理好已经开发出的构件,当面临新的项目时,只需要实现项目具体的业务逻辑,而项目依赖的第三方框架或者是已实现的功能,都可以通过统一的构件库进行查询获取,完成开发。[0006]正是看到基于构件的开发方式优于普通Web项目的开发方式,所以希望将这种开发方式跟WS02Stratos结合,在WS02Stratos中提供一种类似创建WebApplication的方式来创建构件应用,而该种应用同理能够实现集开发、测试、部署、运行于一体的集成到WS02Stratos中。【
发明内容】[0007]本发明的目的在于将基于构件的企业级开发方式跟WS02Stratos结合起来,一来为扩展WS02Stratos平台提供技术思路,另外为企业级开发者提供一种新的基于WS02Stratos平台的开发方法。为实现此目的,本发明需要进行三个方面的工作:首先,针对需要提供给开发者的构件资源,利用Hadoop(分布式系统基础架构,由Apache基金会所开发)分布式存储系统进行设计;接着,针对使用构件资源的开发者管理,提取出WS02Stratos中身份认证管理服务进行实现;最后,为了向开发者提供友好的开发环境,对WS02Stratos对外提供的DeveloperStudioIDE进行功能扩展。[0008]为了实现上述发明目的,采用的具体技术方案如下。[0009]基于WS02Stratos的企业级应用开发方法,包括如下步骤:(1)构件的存储结构设计。基于构件开发最重要的一点就是:构件资源的存储。本发明针对基于SSH框架进行企业级应用开发的场景,利用Hadoop中HDFS(Hadoop分布式文件系统),进行对应框架的目录资源设计。[0010](2)构件下载。当开发者进行基于构件应用的开发时,会出现构件资源缺失的情况。为此本发明需要根据开发者缺失的构件,从Hadoop中进行查找并且将查找结果向开发者提供,进行构件下载。[0011](3)构件上传。当开发者想要对外提供自己开发的构件时,本发明将向开发者提供构件上传的功能,开发者通过该功能就能将构件上传到Hadoop中相关目录,这样其他开发者就能够获取到该上传构件的功能。[0012](4)身份认证。为了保证开发者的合法性,在进行构件开发时,当需要跟Hadoop进行通信时,本发明需要对其进行身份认证。此处,本发明提取出WS02Stratos中的身份认证服务来进行实现。[0013](5)开发环境构件应用新建。前面都是后台技术实现,此处将定位到WS02Stratos对外提供的DeveloperStudioIDE开发环境,它将直接跟开发者打交道,所以本发明针对构件应用新建提供了一个入口。[0014](6)开发环境构件导入。针对(2)中的设计方案,在DeveloperStudio中进行实现。[0015](7)开发环境构件导出。针对(3)中的设计方案,在DeveloperStudio中进行实现。[0016]与现有技术相比,本发明具有如下优点和技术效果:本发明通过对Hadoop、Carbon、DeveloperStudioIDE三个方面的技术设计,最终将达到如图6中所示的效果,开发者们可以很方便的进行基于构件的企业级应用开发。当企业拥有自己的针对具体行业的构件库时,利用上述方式进行一个构件库的部署,然后开放给其他从事该行业的开发者时,将会大大促进该行业的应用开发发展。本发明能够实现集开发、测试、部署、运行于一体的集成到WS02Stratos中。【专利附图】【附图说明】[0017]图1是Stratos整体框架图;图2是Hadoop中构件存储目录设计图;图3是HDFS中应用构件下载流程图;图4是HDFS中构件上传流程图;图5是WS02Stratos身份认证提取示意图;图6是平台扩展结果图。【具体实施方式】[0018]以下结合附图和实例对本发明的实施作进一步说明,但本发明的实施和保护不限于此,以下若有未特别说明的术语及过程,均是本领域技术人员可以参照现有技术实现的。[0019]存储结构HDFS分布式存储系统是以目录的形式来存放文件数据的,它的默认文件结构分为home(HDFS中主目录)、mapreduce(HDFS中用于存放计算作业的目录)、user(HDFS中用户目录)三个目录,围绕这三个目录本发明需要提出存储应用开发中公共构件库存储方法。[0020]考虑到开发者进行基于构件的应用开发时,当涉及到具体的依赖构件无法找到时,将需要一种快速的搜索方式来定位到依赖构件,此时开发者需要通过搜索关键字可以快速的定位到HDFS中某个具体的目录,这样就能够从该目录中查找到需要的依赖构件。所以本发明对公共构件库进行分目录的存储,不同的目录中存储面向某一特定功能的构件。目前企业级应用开发大都是依赖SSH框架作为MVC架构方案,所以本发明将三个框架分为三个不同的目录,用来存放面向不同框架的资源;同时因为本发明的构件库是面向业务相似的企业进行应用应用开发,本发明还需要列出一个目录用来存放共同的面向业务的构件。所以最原始的HDFS中应该有四个目录进行资源存放。[0021]而考虑到开发者需要有自己独立的存储区域用来存放资源,所以本发明选择HDFS中home目录来存放应用开发的基础、公共构件,而选取HDFS中user目录用来为开发者提供独立的构件存储空间。这样既保证公共的构件库不会因为开发者操作不当而受污染,同时让不同的开发者之间有一定的隐私性。[0022]考虑到构件库的可扩展性,Struts(运用MVC设计模型来开发Web应用的时间的开源框架)、Spring(企业应用程序开发的开源框架)、Hibernate(开放源代码的对象关系映射框架)只是代表了企业级应用开发中MVC模式的一个具体实现,而不同的开发者可能对其他MVC感兴趣,为了使得构件库可以包容更多的开发者,本发明还需要提供一个可以扩展HDFS中存放构件库的公共存储区域,也就是HDFS可以新建更多的目录,用来存放其他MVC框架构件。所以本发明为home目录创建更多的目录结构,提供了相关实现接口。图2为Hadoop中具体构件存储目录图。[0023]从HDFS中下载构件开发者在进行应用开发时,遇到依赖缺少错误将是非常平凡的,此时需要从HDFS中快速的寻找依赖构件。本发明采用在本地配置一个缓存目录,开发者先从缓存目录中进行查找,如果本地查找失败;然后再连接HDFS从中将依赖构件找到,先存入本地缓存目录,便于下次直接从中获取,节约时间;最后将该构件添加成为应用开发的构件依赖。如图3HDFS中构件下载流程图。[0024]a)默认开发者采用的IDE环境为Eclipse,而Eclipse中有一个TargetPlatForm专门用来存储Eelipse平台构件,该目录为Eclipse安装目录下面的plugins目录,所以本发明将构件缓存目录设定在此。当开发者需要的构件库中的构件将会直接通过Eclipse展示出来,如果存在应用开发需要的依赖构件,将直接可以通过Eclipse进行操作,转至i;反之,如果不存在,则需要去连接HDFS,转至b;b)连接HDFS,转至c;c)展示HDFS中公共构件库目录;向开发者提供目录选择,当开发者知道依赖构件的相关信息后,更容易判断依赖构件存在位置,转至d;d)公共构件库具体目录构件展示;此处返回给开发者的只是该目录下所有构件的名称信息,节省HDFS到IDE的流量,转至e;e)开发者找到需要的构件后,通过勾选将把请求发送到HDFS中,转至f;f)HDFS将开发者请求的构件发送到开发者本地的缓存目录,如plugins下,转至g;g)因为开发者可能需要依赖的构件不只是存在在一个目录,所以查找完一个目录的构件后,需要去其他的目录进行查找;如果需要,转至c;否则转至h;h)将开发者与HDFS的连接断开,避免太多无用的跟HDFS连接,浪费HDFS服务端资源,转至i;i)最终将下载到的构件依赖,添加至应用的依赖路径中,实现从HDFS中下载构件的想法,转至j;j)结束。[0025]这种方式相对于基于构件开发的方式有一个非常明显的好处是:打破了本地开发的格局。一个公共的构件库,可以向众多的开发者提供资源,但是前提是开发者需要以基于构件的开发方式为基础,即利用〇SGi技术进行开发。因为开发者直接从HDFS中下载的构件,通过加入到IDE(比较典型的是Eclipse)中,利用OSGi的相关特性,从MANIFEST.MF文件下进行资源依赖申明,即可以马上在该构件基础之上,进行应用的开发。[0026]向HDFS中上传构件考虑到为了管理开发者自身的应用开发构件,以及当开发者觉得有利于扩充公共构件库的功能构件时,需要向他们提供一种上传构件的功能。如图4HDFS上传应用构件展示了整个上传流程。[0027]a)开发者首先要连接HDFS,转至b;b)HDFS将向开发者展示公共构件库目录和开发者自身构件目录,以提供给开发者选择,转至c;c)开发者选择一个具体的HDFS目录,这里假定开发者都是理性的对HDFS进行操作,转至d;d)在c中选择完将要上传的HDFS目录后,将对该目录进行检测,看是否存在与将要上传的构件同名的构件,如果存在将要求开发者重新命名构件;反之则转至e;e)利用HDFSAPI将所勾选构件上传至该目录,转至f;f)与HDFS连接断开,避免资源浪费,转至g;g)结束通过引入HDFS分布式存储系统,使得整个公共构件库得以存储在一个公共的区域,从而使得众多的开发者共同参与到面向相似业务的企业级应用开发中来,同时HDFS采用的流式传输数据方式,保证了开发者在与HDFS进行通信时的快速响应。[0028]开发者身份认证WS02Stratos中实现用户对WS02Stratos中服务产品访问的方式都是基于以下两条路线:1.JSP页面中的请求,一般都会由Carbon容器中的BridgeServlet截取,而该BridgeServlet然后再分发到OSGi容器中的某个Bundle(OSGi技术中的基本组件)进行具体的处理,然后再将结果返回到客户页面中;2.Jaggery页面中的请求,一般都会由Carbon容器中的Jaggery服务端Bundle获取,而通过Jaggery服务端Bundle调用OSGi容器中的具体Bundle进行处理,然后将结果返回到客户页面中。[0029]而现在本发明需要面临的是应用开发者,开发者将借助于IDE开发环境来实现对WS02Stratos产品功能的调用,这样上面的两条路线都将不再适用。于是本发明提出第三种方式来实现应用开发者对HDFS和Carbon身份认证功能的结合。[0030]首先HDFS作为一个分布式存储系统,其本身已经将访问HDFS的接口对外提供,这样本发明可以利用OSGi的特性将HDFSAPI转化成为构件,添加至IDE环境中;同时本发明需要自己搭建一个HDFS的分布式存储系统,这样本发明将能够通过IP和设置的HDFS端口号,利用HDFSAPI进行各种操作;接着本发明需要在IDE中利用已经构件化的HDFSAPI来实现对HDFS具体操作的各种需求。[0031]如图5中可以看到Carbon中进行身份认证的功能模块,借助Axis2(实现WebService的一种技术框架)的优点,将功能实现分成了服务端和客户端构件。此时,本发明将客户端构件〇rg.wso2.carbon,authentication,stub,jar将其从Carbon核心中分离出来,然后添加至IDE环境中。在需要对HDFS进行操作时,一般都需要跟HDFS建立连接,所以在与HDFS建立连接之前,本发明调用身份认证客户端代码,对开发者进行一个认证。于是本实例在客户端构件〇rg.wso2.carbon,authentication,stub,jar的基础上封装出了本发明自己的方法LoginAdminServiceClient,它接收开发者的用户名和密码,然后依托Carbon进行开发者身份认证。这样就把HDFS和WS02Stratos结合起来了。[0032]开发环境构件应用新建应用项目是基于构件的开发方式,所以本发明可以借鉴DeveloperStudio中创建Plugin-in项目的方法。但是不同于Plugin-in项目的是本发明在新创建的应用项目Plugin-inDependencies目录中加入了面向该应用项目的核心构件,希望开发者以此核心构件为基础进行应用的快速开发。要达到此目的需要做如下事情:1.在本发明创建的RCP插件的plugin,xml中创建一个Extension扩展点,该扩展点继承至org.eclipse,ui.newWizards。在该扩展点下创建一个AppNewCreationWizard,于是新建应用的功能就能出现在New采单项中。为了能够实现在新建应用项目时,能够添加核心构件到Plugin-inDependencies中,还需要深入到AppNewCreationWizard类中。[0033]2.AppNewCreationWizard类继承至NewWizard实现IExecutableExtension接口,它需要在performFinishO方法中调用了AppNewCreation类。AppNewCreation类继承至WorkspaceModifyOperation,同时封装了一个IPluginContentWizard对象。该类中一个重要的方法createManifest(IProjectproject)用来配置项目的MANIFEST.MF文件,该方法中有一个pluginBase对象,该对象专门用来往创建项目中添加构件。所以本发明将需要添加至创建中的项目转变成为IPluginReference,然后再通过该对象初始化一个IPluginlmport对象,最后再将该对象添加至pluginBase对象中,达到本发明的目的。其中需要说明的是,本发明要添加至项目中的RFID(射频识别技术)构件,已经提前跟DeveloperStudio核心构件存在在一起,所以其路径固定,便能轻易的产生IPluginReference对象。[0034]开发环境构件导入通过DeveloperStudio中Import选项从HDFS中下载需要的构件时,本发明借鉴DeveloperStudio中ImportPlugin的方法来实现,但是考虑到前者的ImportPage太过复杂,于是本发明自己定制了一个简单的,满足本发明需求的Page。达到此目的需要做如下事情:1.在本发明创建的RCP插件的plugin,xml中创建一个Extension扩展点,该扩展点继承至org.eclipse,ui.importWizards。在该扩展点下创建一个Import2HadoopWizard,于是从HDFS导入应用依赖构件的功能就能出现在Import菜单项中。但是具体到从HDFS中获取构件的实现,还需要深入到Import2HadoopWizard类中。[0035]2.Import2HadoopWizard继承Wizard,实现了IExportWizard接口,该类中有两个重要的方法。首先addPagesO方法中添加了两个Page页面,Import2HadoopFirstPage、Import2HadoopSecondPage,其中第一个Page用来选择HDFS中创建的构件库目录结构,第二个Page将列出第一个Page勾选的目录下所有的构件;其次,performFinish()方法将检查plugins目录下面有没有开发者勾选的构件,最终选择本地目录中没有,而开发者勾选的构件加入到本地目录,同时添加到项目的依赖中。[0036]开发环境构件导出通过DeveloperStudio中Export选项往HDFS中上传构件时,本发明借鉴DeveloperStudio中ExportPlugin的方法来实现,但是考虑到前者的ExportPage太过复杂,于是本发明自己定制了一个简单的,满足本发明需求的Page。达到此目的需要做如下事情:1.在本发明创建的RCP插件的plugin,xml中创建一个Extension扩展点,该扩展点继承至org.eclipse,ui.exportWizards。在该扩展点下创建一个Export2HadoopWizard,于是将构件导出到HDFS的功能就能出现在Export菜单项中。但是具体到从HDFS中获取构件的实现,还需要深入到Export2HadoopWizard类中。[0037]2.Export2HadoopWizard继承Wizard,实现了IExportWizard接口,该类中有两个重要的方法。首先addPagesO方法中添加了两个Page页面,Export2HadoopFirstPage、Export2HadoopSecondPage,其中第一个Page用来选择本地DeveloperStudioWorkspace中需要上传的构件,第二个Page将列出HDFS中目录结构,供开发者选择第一个Page中需要上传的目录;其次,performFinishO方法将开发者勾选的构件上传到其勾选的HDFS中目录下。[0038]通过对Hadoop、Carbon、DeveloperStudioIDE三个方面的技术设计,最终将达到如图6中所示的效果,开发者们可以很方便的进行基于构件的企业级应用开发。当企业拥有自己的针对具体行业的构件库时,利用上述方式进行一个构件库的部署,然后开放给其他从事该行业的开发者时,将会大大促进该行业的应用开发发展。【权利要求】1.基于WS02Stratos的企业级应用开发方法,其特征在于:首先,针对需要提供给开发者的构件资源,利用Hadoop分布式存储系统进行设计;接着,针对使用构件资源的开发者管理,提取出WS02Stratos中身份认证管理服务进行实现;最后,对WS02Stratos对外提供的DeveloperStudioIDE进行功能扩展。2.根据权利要求1所述的基于WS02Stratos的企业级应用开发方法,其特征在于具体包括如下步骤:(1)构件的存储结构设计:构件资源的存储即针对基于SSH框架进行企业级应用开发的场景,利用Hadoop中HDFS分布式存储系统,进行对应框架的目录资源设计;(2)构件下载:根据开发者缺失的构件,从Hadoop中进行查找并且将查找结果提供给开发者,进行构件下载;(3)构件上传:当开发者想要对外提供自己开发的构件时,将向开发者提供构件上传的功能,开发者通过该功能就能将构件上传到Hadoop中相关目录,使其他开发者就能够获取到该上传构件的功能;(4)身份认证:为了保证开发者的合法性,在进行构件开发时,当需要跟Hadoop进行通信时,需要对其进行身份认证,通过提取出WS02Stratos中的身份认证服务来进行实现;(5)开发环境构件应用新建:WS02Stratos对外提供的DeveloperStudioIDE开发环境直接面向开发者,针对构件应用新建提供了一个入口;(6)开发环境构件导入和导出:在DeveloperStudio中进行实现开发环境构件导入和导出。【文档编号】G06F9/44GK104090756SQ201410279221【公开日】2014年10月8日申请日期:2014年6月20日优先权日:2014年6月20日【发明者】刘发贵,段琦,杨英仪,杨进申请人:华南理工大学