[转载]GT4 远程执行客户机快速入门

GT4 远程执行客户机快速入门


您是一位软件开发人员,正在努力地把公司的应用程序移植到一个崭新的分布式环境中。您的组织已经为网格计算这一令人兴奋的新领域 提供了一些资源,但是您却不知道接下来应该做些什么。最终期限很快就要到了,惶恐的气氛逐渐在您的团队中蔓延开来。您需要做的事情是制定一个快速路线图, 将组织的应用程序部署或移植到计算或数据网格中。Globus 一直以来都在致力于提供有关 Globus Toolkit V4.0(GT4)的文档,但您现在需要的是开发文档。Globus 正在创建一些开发文档 Web 站点来解决这个问题。同时,在本文中,我们给出了一些资源管理领域中的开发技巧,目的在于帮助您使用 Web services Grid Resource Allocation and Management(WS-GRAM)服务快速启用网格应用程序。
c.gif
OGSA-GRAM 和 WS-GRAM 之间的可移植性问题
GT4 中的 WS-GRAM 与 GT3(OGSA-MMJFS)中实现的 GRAM 接口并不兼容,不过大部分接口的名字都是相同的:例如 GramJobListener、GramJob 等。实际上,这个自定义 GRAM 客户机的大部分代码都与 GT3 的对应部分非常类似,是构建在 GT3 的代码基础之上的。GRAM 在 GT4 中作为 Web Services Resource Framework(WSRF)服务实现;而在 GT3 中,它是一个 OGSA 服务。

全新的 WS-GRAM

Globus GRAM 服务为多种类型的作业调度程序提供了安全提交作业的功能。为支持 XML 加密和签名,WS-GRAM 彻底重新进行了构建。它使用数字证书在客户机和服务器之间发送安全的 XML SOAP 消息。实际上,GT4 就是一个安全 Web 服务容器。它与传统容器之间的区别就是在于可跨多个 SOAP(Simple Object Access Protocol)消息(也称为 WSRF)维护状态。

下面的技巧展示了如何创建一个自定义 Java™ 技术程序向远程主机提交 WS-GRAM 作业。

技巧 1:监听作业状态的变化

要监听作业状态的变化,就需要实现 org.globus.exec.client.GramJobListener 接口,它与其 GT3 的对应部分并不兼容(顺便提一下,二者的接口名是相同的)。这种技术如下所示。


清单 1. WS-GRAM 客户机基础实现
/**
* A Custom GRAM Client for GT4:
* 1) Based on the GlobusRun command from the GT4 WS-GRAM implementation.
* 2) The GT4 WSRF libraries are required to compile this stuff, plus the
* following VM arguments must be used:
* -Daxis.ClientConfigFile=[GLOBUS_LOCATION]/client-config.wsdd
* -DGLOBUS_LOCATION=[GLOBUS_LOCATION]
* @author Vladimir Silva
*
*/
public class GRAMClient
// Listen for job status messages
implements GramJobListener
{
private static Log logger = LogFactory.getLog(GRAMClient.class.getName());

// Amount of time to wait for job status changes
private static final long STATE_CHANGE_BASE_TIMEOUT_MILLIS = 60000;

/**
* Job submission member variables.
*/
private GramJob job;

// completed if Done or Failed
private boolean jobCompleted = false;
// Batch runs will not wait for the job to complete
private boolean batch;

// Delegation
private boolean limitedDelegation = true;
private boolean delegationEnabled = true;

// Don't print messages by default
private boolean quiet = false;

// proxy credential
private String proxyPath = null;

/**
* Application error state.
*/
private boolean noInterruptHandling = false;
private boolean isInterrupted = true;
private boolean normalApplicationEnd = false;

WS-GRAM 中的基本对象是 GramJob。它用来以 XML 格式提交作业描述文件。作业描述中定义了可执行程序、参数、标准输入/输出/错误、阶段文件(staging file)以及其他一些选项。下面是一个简单的作业描述文件。


清单 2. 简单的作业描述 XML 文件

                    

你可能感兴趣的:([转载]GT4 远程执行客户机快速入门)