[转载]用Eclipse集成GT3开发网格服务

用Eclipse集成GT3开发网格服务


Eclipse是一款优秀的开放源代码集成开发环境(IDE),随着其不断的成熟,越来越受到开发者的喜爱。在本文中,笔者用 Eclipse集成了Globus Toolkit 3.0来开发了一个具体的网格服务,并重点介绍了用Eclipse的标准窗口小部件工具箱(SWT)开发网格服务的GUI界面程序。

引言

Globus Toolkit 3.0(GT3)是Globus组织对全球网格论坛GGF(Global Grid Forum)制定的开放网格服务基础设施OGSI(Open Grid Service Infrastructure)的具体参考实现。GT3提供了一组类库和工具以帮助开发者开发符合开放网格服务体系结构OGSA(Open Grid Service Architecture)的网格服务程序。开发者在使用GT3开发网格服务时,需要使用文本编辑器编辑Java源文件和各种配置文件,并用Ant编译和 配置这些文件,最后在控制台下输入命令运行服务。这使得开发网格服务变得很复杂,用户需要考虑东西太多。虽然GT3提供了图形化的网格服务查看和运行工 具,但由于Java语言本身不论是AWT还是SWING在开发图形界面程序上的缺陷,使得开发出的GUI程序无论是速度还是外观,都让人难以接受。

Eclipse 是新一代的IDE开发环境的代表,它不仅支持Java语言的开发,同时还可以支持其他语言的开发。Eclipse的核心是采用了插件的体系结构,通过开发 插件,开发者可以在Eclipse上扩充可以想象的到的功能。Eclipse的Java开发工具(JDT)不仅支持Java语法显亮,还有Code Assist等功能。同时还集成了Ant插件,使得Eclipse开发Java程序变得非常容易。

标准窗口小部件工具 箱Standard Widget Toolkit(SWT)是Eclipse组织为广大java程序员开发的基于Java的GUI程序所做出的一大贡献。SWT 工具箱类似于 SWING和AWT,它向开发人员提供了一组窗口小部件。然而,SWT 与其它工具箱之间的主要区别在于 SWT 通过Java本地接口(JNI)技术来调用操作系统的底层 GUI 窗口小部件。这种方法向 Java 开发人员提供了跨平台的 API 来实现"外观"像本机桌面应用程序的解决方案。

基于Eclipse和SWT,本文实现了一个具有通知机制的 EchoString网格服务,并开发了一个GUI界面程序用来管理和运行网格服务。EchoString服务的功能很简单:客户端订阅该项服务,并在调 用此服务时指定一个字符串,服务器端服务收到字符串后把该字符串发送给订阅此服务的用户,这个服务用到了GT3的通知机制。 使用SWT开发的系统界面如下图:


图1 系统界面

本文假定你对网格服务有一定的了解,并能使用GT3编写一些基本的网格服务。可参看参考资料。


blue_rule.gif
c.gif
c.gif
u_bold.gif 回页首


环境配置

操作系统:Windows 2000 professional

软件:

  • GT3-core-src.tar。(http://www.globus.org)。GT3 core源码发行包。
  • Eclipse-SDK-2.1-win32.zip。(http://www.eclipse.org)。Eclipse的软件开发包。这里我用的是windows平台下的2.1版本。

2.1 GT3的安装

安 装GT3首先需要安装JDK和Apache Ant工具。请参看参考资料5。下载GT3-core-src.tar后,解压缩到一个目录,本文解压缩到了D:\grid\ogsa\impl java目录下。然后在此目录下运行ant dist来安装GT3。这需要等一段时间,视你的机器性能而定。安装完成后,在此目录下运行ant startContainer,然后重新打开一个cmd窗口到这个目录下,运行ant gui,如果有界面成功显示,表示GT3 core安装成功。

2.2 Eclipse的安装

Eclipse 的安装很简单,只需要把它解压缩到一个目录就可以了。本文解压缩到了D:\Eclipse。直接运行eclipse.exe,第一次运行的时候会自动寻 找JDK并完成相应的配置,然后就进入了Eclipse的主界面。关于Eclipse的基本使用方法,IBM DdeveloperWorks,Eclipse的网站以及Eclipse的随机文档上都有详细地介绍,这里不详细描述了。

以下不加说明的话,GT3的目录为D:\grid\ogsa\impl\java;Eclipse的目录为D:\Eclipse。


blue_rule.gif
c.gif
c.gif
u_bold.gif 回页首


使用Eclipse和GT3进行网格服务开发

3.1 建立工程

打开File->New->Java->Java Project,创建一个名为sample的Java工程。如图:


图2 建立工程

点击Next,进入下一个对话框,接收默认设置,然后点击Finish,这样一个Java工程的框架就自动生成了。

3.2 设置类路径

3.2.1 设置GT3类路径

选 择刚建立的sample工程,点击右键,从弹出窗口中选择属性,打开属性窗口,选择Java build path。选择add External JARs,从文件选择对话框中选择GT3安装目录下lib文件夹(在本文中是D:\grid\ogsa\impl\java\lib)中的 GT3库文件,都添加进来。如图:


图3 设置类路径

3.2.2 设置SWT和JFace路径

因 为本文使用SWT和JFace开发界面,所以需要它们的JAR包。其中swt.jar包在你的Eclipse安装目录\plugin\ org.eclipse.swt.win32_2.1.0\ws\win32目录下。Jface.jar包在你的Eclipse安装目录\ plugin\org.eclipse.jface.win32_2.1.0目录下。找到这个两个文件并添加到sample工程的类路径中。为了确保 Java的虚拟机能够获得在运行时使用正确的SWT GUI的共享库,我们还需要设置一下参数:

-Djava.libarary.path=d:\eclipse\plugin\org.eclipse.swt.win32_2.1.0\os\win32\x86, 把相应的JNI本地化库添加进来,这一步在建立运行配置时会用到。下面就可以开发网格服务了。

3.3 开发实现通知功能的EchoString网格服务

OGSI定义了网格服务的通知机制,它将消息的发布方服务接口称为NotificationSource,将消息的接收方服务接口称为NotificationSink。它们之间的传递过程如下图所示:


图4 通知传送的过程

GT3 框架对通知机制的实现是通过operation provider实现的。GT3提供了两种方式的网格服务的编程模式:一种是直接继承GridServiceImpl类和其他接口,这些类由GT3提供, 并且实现了OGSI定义的接口。另一种方式即operation provider方式,也叫做委托代理的方式。这种方式使得我们可以很容易的在服务部署时"插拔"WSDL文件中所描述的操作的各种不同的实现。目前 GT3.0框架以operation provider的方式实现了OGSI所定义的Factory和Notification接口。这样,如果想在自己开发的服务中添加Factory和 Notification的行为,只需要在服务的部署描述文件中配置即可。

3.3.1 服务端开发

3.3.1.1 提供服务接口

GT3 提供了两种方式用来生成WSDL形式的服务接口:一种是通过Java类接口,运行Java2WSDL工具生成WSDL文档。一种是通过gWSDL文件描 述,通过使用GWSDL2WSDL工具来生成WSDL文档。参考资料5《用GT3开发网格服务》中使用得是从Java类接口生成服务接口,服务实现继承 GT3提供的GridServiceImpl类的方式。在这里我使用gWSDL文件来描述服务接口,用operation provider的方式实现服务。(详细的资料请参看源文件和GT3编程手册)

1. 定义serviceData模式

在Eclipse中选中sample工程,建立schema\echostring文件夹,这个文件夹用于存放gWSDL文件。

选择新建立的echostring文件夹,右键弹出菜单->New->File,建立echostringstate.xsd文件。如下图:


图5 创建文件

文件内容如下:

echostringstate.xsd





GT3通知机制的实现是和 ServiceData紧密相关的。要使得通知的消息含有有用的信息,我们要定义一个SDD。当serviceData值改变时,通知源会以如下格式向接 受者发送通知消息。这个SDD中,我们定义一个名为status的string变量,用来记录状态。参看源文件中的sample\schema\ echostring\echostringstate.xsd。

2.建立gWSDL文件并添加服务数据

用同样的方法在sample\schema\echostring目录下建立NotificationEchoString.gwsdl文件,编辑文件:

sample\schema\echostring\NotificationEchoString.gwsdl
…….

你可能感兴趣的:([转载]用Eclipse集成GT3开发网格服务)