• 検索結果がありません。

Microsoft PowerPoint - グリッド協議会GT4演習資料_2007_配布用

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - グリッド協議会GT4演習資料_2007_配布用"

Copied!
21
0
0

読み込み中.... (全文を見る)

全文

(1)

演習

1~6

Globus Toolkit Version 4 (Java WS Core)

演習: WS-Resourceの生成と機能拡張

(2)

目標:

GT4 Java Core 、WSRF基本仕様のサポート確認

ƒ

サーバー側の実装方法

– サービス – リソース – 各種設定ファイル

ƒ

(クライアントの実装方法)

– 最低限 ƒ WSRFの標準的な機能は、GT4に含まれる標準クライアントで利用可能

ƒ

GT4標準クライアントの利用方法

– wsrf-get-property – wsrf-update-property – wsrf-destroy – wsrf-set-termination-time

(3)

概要

ƒ

0.Borja Sotomayor,”The Globus Toolkit 4 Programmer‘s Tutorial” が基本

– http://gdp.globus.org/gt4-tutorial/

ƒ “Chapter 5. Multiple Resources”に修正を加え、その効果を逐次確認する

ƒ

1.WS-Coreの導入

ƒ

2.標準的なWS-Resourceパターンの確認

– サービス及びリソースの構築、デプロイ、アクセス確認

ƒ

3.リソース・プロパティに対するアクセス手段の追加

(オペレーション・プロバイダの活用)

– 実装は修正せず、WSDL, WSDDファイルの変更のみで実現

ƒ

4.リソース・プロパティのコードにおける表現方法を変更

(サービス/リソース実装の変更)

– サービス/リソースの実装のみを変更

ƒ

5.WS-ResorceLifeTimeへの対応:Immediate Destruction

– WSDL, WSDDファイルの変更のみで実現

ƒ

6. WS-ResorceLifeTimeへの対応:Scheduled Destruction

– WSDL/WSDD、リソース実装の修正。サービス実装は変更なし ƒ オプション:JNDIのデプロイファイルの修正(破棄時刻をより正確にするため)

(4)

WS-Resourceの拡張(本日の演習)

WS-Resource

Custom method (Get Property)

WS-Resource

Custom method Get Property Set Property

WS-Resource

Custom method Get Property Set Property Immediate Destruction

WS-Resource

Custom method Get Property Set Property Immediate Destruction Scheduled Destruction wsrf-get-property カスタム クライアント wsrf-update-property wsrf-destroy wsrf-set- termination-time

3,4

5

6

(5)

2.標準的なWS-Resourceパターンの確認(主要ファイルの

み)

クライアント ClientCreate.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java epr.txt deploy-server.wsdd MathService.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(6)

ClientCreate.java(無修正で使用)

// Get factory portType

factoryEPR = new EndpointReferenceType();

factoryEPR.setAddress(new Address(factoryURI));

mathFactory = factoryLocator.getFactoryPortTypePort(factoryEPR);

// Create resource and get endpoint reference of WS-Resource CreateResourceResponse createResponse =

mathFactory.createResource(new CreateResource()); instanceEPR = createResponse.getEndpointReference();

// Write endpoint reference to file …..

ƒ

MathFactoryServiceを呼び出し、

End Point Reference (EPR)を取得する

– WS-Resourceが生成される

ƒ

演習を通じて、修正無しで使用する

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(7)

ClientAdd.java (無修正で使用)

// Get endpoint reference of WS-Resource from file FileInputStream fis = new FileInputStream(eprFile);

instanceEPR = (EndpointReferenceType) ObjectDeserializer.deserialize( new InputSource(fis),EndpointReferenceType.class); fis.close(); … // Get PortType MathPortType math = instanceLocator.getMathPortTypePort(instanceEPR); // Perform addition math.add(value); …..

ƒ

EPRで示されたWS-Resource

(MathService + MathResource)に

加算を依頼、結果を受け取る

ƒ

演習を通じて、修正無しで使用する

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(8)

その他のファイル(無修正で使用)

ƒ

MathQNames.java(図中省略)

– 名前空間の扱いを簡易にするための補助ファイル

ƒ

MathResourceHome.java(図中省略)

– リソース・ホーム

ƒ

MathFactoryService.java

– ファクトリー・サービス … ctx = ResourceContext.getResourceContext();

home = (MathResourceHome) ctx.getResourceHome(); key = home.create();

String instanceService = (String)

MessageContext.getCurrentContext().getService().getOption("instance"); String instanceURI = baseURL.toString() + instanceService;

epr = AddressingUtils.createEndpointReference(instanceURI, key);

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(9)

MathService.java (修正あり)

ƒ

WS-Resourceを形成するサービスの実装

ƒ

リソース・プロパティの実装方法変更に

あわせ、演習3で修正

簡便な方法から、よりWSRFの特徴が見える方法へ

… resource = ResourceContext.getResourceContext().getResource(); MathResource mathResource = (MathResource) resource;

mathResource.setValue(mathResource.getValue() + a); //初期状態

mathResource.setLastOp("ADDITION"); …

ResourceProperty valueRP = mathResource //修正後

.getResourcePropertySet()

.get(MathQNames.RP_VALUE); Integer value = (Integer) valueRP.get(0);

value = new Integer(value.intValue()+a); valueRP.set(0, value); クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(10)

MathResource.java (1,修正あり)

ƒ

WS-Resourceを形成するリソースの実装

ƒ

演習3、5で修正

ƒ

演習5まで終了したファイルから抜粋

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

public class MathResource implements Resource, ResourceIdentifier, ResourceProperties, ResourceLifetime { …

private Calendar terminationTime; …

public Object initialize() throws Exception { this.key = new Integer(hashCode());

this.propSet = new SimpleResourcePropertySet( MathQNames.RESOURCE_PROPERTIES);

valueRP = new SimpleResourceProperty(MathQNames.RP_VALUE); valueRP.add (new Integer(0));

this.propSet.add(valueRP); …

return key; }

(11)

MathResource.java (2,修正あり)

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

/* Required by interface ResourceLifetime */ public Calendar getCurrentTime() {

return Calendar.getInstance(); }

public Calendar getTerminationTime() { return this.terminationTime;

}

public void setTerminationTime(Calendar terminationTime) { this.terminationTime=terminationTime;

}

/* Required by interface ResourceProperties */

public ResourcePropertySet getResourcePropertySet() { return this.propSet;

}

/* Required by interface ResourceIdentifier */ public Object getID() {

return this.key; }

(12)

Math.wsdl (修正あり)

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

ƒ

インターフェースを記述

ƒ

そのままデプロイされるわけではない

–全部を書かなくても良い ƒWSDLプリプロセッサー(GTが提供)

ƒ

演習2,4,5で修正

(13)

deploy-server.wsdd (修正あり)

ƒ

デプロイの構成を行う

サービスのURI、使用するクラスの指定

WSDLファイルの指定

ƒ

GT4のツールを使用する場合は、後ろに

_serviceを追加した形で指定する

オペレーション・プロバイダの指定

ƒ

演習 2,4,5で修正

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl <!-- Instance service -->

<service name="examples/core/factory/MathService" provider="Handler" use="literal“ style="document">

<parameter name="className“

value="org.globus.examples.services.core.factory.impl.MathService"/>

<wsdlFile>share/schema/examples/MathService_instance/Math_service.wsdl</wsdlFile> …

<parameter name="providers" value="GetRPProvider SetRPProvider DestroyProvider SetTerminationTimeProvider SubscribeProvider GetCurrentMessageProvider"/>

(14)

その他の設定ファイル

ƒ

Factory.wsdl (修正なし)

ファクトリーサービスのインターフェースを

記述

ƒ

deploy-jndi-config.xml (図中省略、修正ありÆなしにする)

リソースホームに関連

演習5で修正

ƒ

修正しなくても動作するが、リソース破棄の検知に時間がかかる。

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

(15)

epr.txt

<ns1:MathResourceReference xsi:type="ns2:EndpointReferenceType" xmlns:ns1="http://www.globus.org/namespaces/examples/core/MathService_instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/03/addressing"> <ns2:Address xsi:type="ns2:AttributedURI"> http://192.168.1.1:8080/wsrf/services/examples/core/factory/MathService </ns2:Address> <ns2:ReferenceProperties xsi:type="ns2:ReferencePropertiesType"> <ns1:MathResourceKey>23578083</ns1:MathResourceKey> </ns2:ReferenceProperties> <ns2:ReferenceParameters xsi:type="ns2:ReferenceParametersType"/> </ns1:MathResourceReference> クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl

ƒ

WS-ResourceのEnd Point Referenceを示す

テキストファイル

ƒ

ClientCreateによって生成される

(16)

in.xml

ƒ

演習2で使用

wsrf-update-propertyコマンドの入力ファイル

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java タ ー ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java

epr.txt deploy-server.wsdd MathResourceHome.javadeploy-jndi-config.xml

MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl in.xml <?xml version="1.0" encoding="UTF-8"?> <doc> <ns1:LastOp xmlns:ns1="http://www.globus.org/namespaces/examples/core/MathService_instance"> WSRF_UPDATE_PROPERTY </ns1:LastOp> </doc>

(17)

参考:globus-build-service

ƒ

チュートリアルに含まれているが、独立したプロジェクトとしても公開されて

いる(GT4標準添付ではない)

http://gsbt.sourceforge.net/content/view/14/31/

ƒ

GT4を用いたWSRF Webサービスの構築を容易にする

特定のディレクトリ構造に従ってファイルを用意する事が必要

ƒ

関連ファイル

globus-build-service.py

ƒ

build.mappings

ƒ

build.xml

ƒ

C:¥ws-core-4.0.2¥share¥globus_wsrf_tools¥build-stubs.xml

flatten, generateBindings, generateStubs, mergePackageMapping, ..

ƒ

C:¥ws-core-4.0.2¥share¥globus_wsrf_common¥build-packages.xml

makeGar, deployGar, undeployGar, ..

ƒ

namespace2package.mappings

(18)

3.リソース・プロパティに対するアクセス手段の追加

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java (wsrf-get-property) (wsrf-update-property) イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java epr.txt MathResourceHome.java deploy-jndi-config.xml deploy-server.wsdd MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl in.xml

(19)

4.リソース・プロパティの表現方法を変更

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java (wsrf-get-property) (wsrf-update-property) イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java epr.txt MathResourceHome.java deploy-jndi-config.xml deploy-server.wsdd MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl in.xml

(20)

5.WS-ResorceLifeTimeへの対応:Immediate Destruction

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java (wsrf-get-property) (wsrf-update-property) (wsrf-destroy) イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java epr.txt MathResourceHome.java deploy-jndi-config.xml deploy-server.wsdd MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl in.xml

(21)

6.WS-ResorceLifeTimeへの対応:Scheduled Destruction

クライアント ClientCreate.java MathQNames.java クライアント ClientAdd.java (wsrf-get-property) (wsrf-update-property) (wsrf-destroy) (wsrf-set-termination-time) イン タ ー フ ェ ー ス Webサービス MathFactoryService.java Factory.wsdl リソース MathResource.java MathQNames.java epr.txt MathResourceHome.java deploy-jndi-config.xml deploy-server.wsdd MathService.java MathQNames.java イン タ ー フ ェ ー ス Webサービス Math.wsdl in.xml

参照

関連したドキュメント

[Publications] Masaaki Tsuchiya: &#34;A Volterra type inregral equation related to the boundary value problem for diffusion equations&#34;

[Publications] S.Kanoh,M.Motoi et al.: &#34;Monomer-isomerization, Regioselective Cationic Ring-Opening Polymerization of Oxetane Phthalimide Involving Carbonyl

&#34;A matroid generalization of the stable matching polytope.&#34; International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). &#34;An extension of

The dynamic nature of our drawing algorithm relies on the fact that at any time, a free port on any vertex may safely be connected to a free port of any other vertex without

The reported areas include: top-efficiency multigrid methods in fluid dynamics; atmospheric data assimilation; PDE solvers on unbounded domains; wave/ray methods for highly

[r]

Rumsey, Jr, &#34;Alternating sign matrices and descending plane partitions,&#34; J. Rumsey, Jr, &#34;Self-complementary totally symmetric plane

McKennon, &#34;Dieudonn-Scwartz theorem on bounded sets in inductive limits&#34;, Proc. Schwartz, Theory of Distributions, Hermann,