1、封装服务封装服务主要是指为某些功能或操作提供对外的接口,从而可以让远方的程序进行调用。在服务代码中,可以自己编写业务逻辑,也可以调用已经编写好的JavaBean。我们主要采用中间件GDT(Grid Development Tools)开发服务,GDT可以简化开发流程。利用它我们可以方便的实现Stub类的生成、gar包的生成以及服务的本地部署。安装以及基本的使用方法见http:/mage.uni-marburg.de/trac/gdt/wiki。 一、封装资源为服务在结构工程网格中,所有的资源必须以网格服务的形式存在。因此,对资源的服务化封装是一个必须且重要的环节。到目前为止,已经顺利将结构工程
2、网格中的现有数据资源以及针对此数据资源的几个数据查询操作封装为网格服务,并能够从Portal处进行调用。需要说明的是,我们实现的是从异地对网格服务进行调用。网格服务的开发原理和部署过程都是类似的。图3.2说明了在网格环境下开发网格服务的流程:图3.2 网格服务开发流程图1.1、将数据资源代理的业务逻辑打为war包由于是对数据资源进行异地封装且开发环境存在较大差异,因此在进行封装之前,需要将原有工程打为war包并重新配置开发环境。这是统一开发环境的过程,其具体的操作过程如下所示:1、右键点击所要打包的工程,如图3.2.11界面,选择其中的Export项。图3.2.112、选择将要生成的文件为wa
3、r文件,点击Next,如图3.2.12所示。图3.2.123、选择要打为war包的工程,并确定生成的war文件的输出路径,点击Finish,如图3.2.13所示。图3.2.134、为了便于重新配置开发环境,将wenesesgrid.war传送到信息服务小组并进行解压。5、将wenesesgrid.war解压后生成的所有的jar文件拷贝到GT4的容器中去,具体位置是/usr/local/globus-4.0.5/lib。6、重新启动GT4容器,使设置生效。至此为止,环境的配置过程圆满结束。1.2编写服务建立工程开发网格服务,首先要做的是建立一个相应的服务工程。在工程内部,实现了对所开发网格服务的
4、属性以及各种操作的定义、初始化以及注册过程。新建一个网格服务工程的具体步骤如下所示:1、新建一个java工程。FileNewProjectJava Project,输入完成后,点击Finish,如图3.2.2.11所示图3.2.2.112、创建服务。右键点击DatabaseService工程,NewOther,选择MAGE-GDT Grid Service,如图3.2.2.12所示。图3.2.2.12不需要做任何更改,直接点击Next,如图3.2.2.13所示。图3.2.2.13输入服务的名称、名字空间等信息并选择服务和资源的类型,点击Next,如图3.2.2.14所示。注意选项Service
5、 Style和Resource Style。图3.2.2.14 选择资源属性的信息提供者以及查询方式,点击Finish,如图3.2.2.15。图3.2.2.15 至此,一个网格服务工程创建完毕。在Eclipse的各个工作区显示如图3.2.2.16所示。图3.2.2.16编写服务定义文件在此部分中,主要是对要封装为服务的资源属性以及各种操作进行定义,并指明了收集资源属性信息的聚集源类型等相关信息。其具体过程是在文件Database.java中实现的,大致内容如下所示:public class Database GridAttribute(mds_agg_type=Query,mds_renew=
6、300,mds_term_time=2008-08-08T00:00:00,mds_query_type=GetMultipleResourceProperties,mds_query_poll=100000) private String ResourceType; /资源的属性 public String getResourceType() /属性的set()和get()方法 return ResourceType; public void setResourceType(String resourceType) ResourceType = resourceType; GridMetho
7、d public String findexpfrommaterial(String type) /对外接口1 String result = null; DataSearch q = new DataSearch(); result = q.SearchExpFromMaterial(type); return result; GridMethod public String findexpfromsc(String type, String dimension) /对外接口2 String result = null; DataSearch q = new DataSearch(); re
8、sult = q.SearchExpFromSC(type, dimension); return result; GridMethod public String findexpfromscandmaterial(String materialtype, String sctype, String scdimension) /对外接口3 String result = null; DataSearch q = new DataSearch(); result = q.SearchExpFromSCAndMaterial(materialtype, sctype, scdimension);
9、return result; Database.java中可以只定义变量(资源属性)和方法(对外接口),具体的业务逻辑可以在生成的服务代码中添加。编辑完Database.java文件后,点击保存按钮。保存成功后,GDT会自动根据编写的java文件生成服务代码、wsdl文件以及各种配置文件。在Eclipse的左侧工作区DatabaseService工程的目录如图3.2.2.2所示:图3.2.2.2 工程目录13资源属性初始化及对外接口实现在此部分,要做的工作有两项:一方面是在网格服务的资源文件DatabaseResource.java中初始化上一部分所定义属性;另一方面是在网格服务文件Datab
10、aseService.java中实现了对外接口。首先,对所定义属性的初始化方法如下所示:public void initialize() this.propSet = new SimpleResourcePropertySet(RESOURCE_PROPERTIES); try ResourceTypeRP = new SimpleResourceProperty(RP_RESOURCETYPE); this.ResourceTypeRP.add(new Object(); this.propSet.add(ResourceTypeRP); catch (Exception e) throw
11、new RuntimeException(e.getMessage(); / begin-user-code this.setResourceType(DatabaseResource); /将属性ResourceType初始化为DatabaseResource / end-user-code 其次,对外接口的实现方法如下所示:public FindexpfrommaterialResponse findexpfrommaterial(Findexpfrommaterial complexType) throws RemoteException FindexpfrommaterialRespo
12、nse response = new FindexpfrommaterialResponse(); / begin-user-code String result = null; /对外接口1的初始化 DataSearch q = new DataSearch(); result = q.SearchExpFromMaterial(complexType.getType(); response.setFindexpfrommaterialReturn(result); / end-user-code return response; public FindexpfromscResponse f
13、indexpfromsc(Findexpfromsc complexType) throws RemoteException FindexpfromscResponse response = new FindexpfromscResponse(); / begin-user-code String result = null; /对外接口2的初始化 DataSearch q = new DataSearch(); result = q.SearchExpFromSC(complexType.getType(), complexType.getDimension(); response.setF
14、indexpfromscReturn(result); / end-user-code return response; public FindexpfromscandmaterialResponse findexpfromscandmaterial(Findexpfromscandmaterial complexType) throws RemoteException FindexpfromscandmaterialResponse response = new FindexpfromscandmaterialResponse(); / begin-user-code String resu
15、lt = null; /对外接口3的初始化 DataSearch q = new DataSearch(); result = q.SearchExpFromSCAndMaterial(complexType.getMaterialtype(), complexType.getSctype(), complexType.getScdimension(); response.setFindexpfromscandmaterialReturn(result); / end-user-code return response; 1.4编译生成存根类及gar包以上所有的操作都完成后,可以说网格服务已经开发完成了。接下来,还需要将生成把DatabaseService服务部署到GT4容器中去所需要的g
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1