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

time.book

N/A
N/A
Protected

Academic year: 2021

シェア "time.book"

Copied!
20
0
0

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

全文

(1)

BEA

WebLogic

Server

WebLogic Time

Services

プ ログラ

マーズ

ガイ ド

BEA WebLogic Server バージ ョ ン 7.0 マニ ュ アルの改訂 : 2002 年 6 月 28 日

(2)

著作権

Copyright © 2002, BEA Systems, Inc. All Rights Reserved.

限定的権利条項

本ソフトウェアおよびマニュアルは、BEA Systems, Inc. 又は日本ビー・イー・エー・システムズ 株式会社(以下、「BEA」といいます)の使用許諾契約に基づいて提供され、その内容に同意す る場合にのみ使用することができ、同契約の条項通りにのみ使用またはコピーすることができま す。同契約で明示的に許可されている以外の方法で同ソフトウェアをコピーすることは法律に違 反します。このマニュアルの一部または全部を、BEA からの書面による事前の同意なしに、複 写、複製、翻訳、あるいはいかなる電子媒体または機械可読形式への変換も行うことはできませ ん。 米国政府による使用、複製もしくは開示は、BEA の使用許諾契約、および FAR 52.227-19 の 「Commercial Computer Software-Restricted Rights」条項のサブパラグラフ (c)(1)、DFARS

252.227-7013 の「Rights in Technical Data and Computer Software」条項のサブパラグラフ (c)(1)(ii) 、NASA FAR 補遺 16-52.227-86 の「Commercial Computer Software--Licensing」条項の

サブパラグラフ (d)、もしくはそれらと同等の条項で定める制限の対象となります。 このマニュアルに記載されている内容は予告なく変更されることがあり、また BEA による責務を 意味するものではありません。本ソフトウェアおよびマニュアルは「現状のまま」提供され、商 品性や特定用途への適合性を始めとする(ただし、これらには限定されない)いかなる種類の保 証も与えません。さらに、BEA は、正当性、正確さ、信頼性などについて、本ソフトウェアまた はマニュアルの使用もしくは使用結果に関していかなる確約、保証、あるいは表明も行いません。

商標または登録商標

BEA、Jolt、Tuxedo、および WebLogic は BEA Systems, Inc. の登録商標です。BEA Builder、BEA Campaign Manager for WebLogic、BEA eLink、BEA Manager、BEA WebLogic Commerce Server、 BEA WebLogic Enterprise、BEA WebLogic Enterprise Platform、BEA WebLogic Express、BEA WebLogic Integration、BEA WebLogic Personalization Server、BEA WebLogic Platform、BEA WebLogic Portal、BEA WebLogic Server、BEA WebLogic Workshop および How Business Becomes E-Business は、BEA Systems, Inc の商標です。

その他の商標はすべて、関係各社がその権利を有します。

WebLogic Time Services プログラマーズ ガイド

パート番号 マニュアルの改訂 ソフトウェアのバージョン

(3)

WebLogic Time Services プログラマーズガイド iii

目次

このマニュアルの内容

対象読者... v e-docs Web サイト ... v このマニュアルの印刷方法 ... vi サポート情報 ...vi 表記規則...vii

1.

WebLogic Time

サービス(非推奨)のプログラミング

Time サービスの非推奨について...1-1 概要 ...1-2 WebLogic Time のアーキテクチャ ...1-2 WebLogic Time API ...1-3

2.

WebLogic Time

を使用した実装

クライアント上での反復トリガのスケジューリング ...2-1 WebLogic クライアントからの反復サーバサイド トリガのスケジューリング 2-3 手順 1. ScheduleDef および TriggerDef インタフェースの実装...2-3 手順 2. WebLogic クライアントからの ScheduledTrigger の作成...2-5 複雑なスケジュールの設定 ...2-7 再スケジューリング...2-7 ScheduledTrigger の停止...2-8

(4)
(5)

WebLogic Time Services プ ログ ラマーズガイ ド v

このマニュ アルの内容

こ のマニ ュ アルでは、 BEA WebLogic Server™ 上で実行さ れる WebLogic Time サービ スのアーキテ ク チャ について説明します。

こ のマニ ュ アルの構成は次の と お り です。

 第 1 章 「WebLogic Time サービ ス (非推奨) のプロ グ ラ ミ ング」 では、

WebLogic Time サービ スのアーキテ ク チャについて概説します。

 第 2 章 「WebLogic Time を使用した実装」 では、 WebLogic Time サービ ス の実装方法について説明します。

対象読者

こ のマニ ュ アルは、 アプ リ ケーシ ョ ンに Time サービ ス を実装する アプ リ ケー シ ョ ン開発者を対象 と しています。 こ のマニ ュ アルは、 Web テ ク ノ ロ ジ、 オブ ジ ェ ク ト 指向プ ロ グ ラ ミ ング手法、 および Java プロ グ ラ ミ ング言語に読者が精 通してい る こ と を前提 と して書かれています。

e-docs Web

サイ ト

BEA 製品の ド キ ュ メ ン ト は、 BEA の Web サ イ ト で入手で き ます。 BEA のホー

(6)

vi WebLogic Time Services プ ログラ マーズガ イ ド

このマニュ アルの印刷方法

Web ブ ラ ウザの [ フ ァ イ ル|印刷 ] オプシ ョ ン を使用する と 、 Web ブ ラ ウザか ら こ のマニ ュ アルを一度に 1 章ずつ印刷で き ます。 こ のマニ ュ アルの PDF 版は、 Web サ イ ト で入手でき ます。 PDF を Adobe Acrobat Reader で開 く と 、 マニ ュ アルの全体 (ま たは一部分) を書籍の形式で印 刷で き ます。 PDF を表示するには、 WebLogic Server ド キ ュ メ ン ト のホーム ペー ジ を開き、 [ ド キ ュ メ ン ト のダ ウ ン ロー ド ] を ク リ ッ ク し て、 印刷する マニ ュ ア ルを選択します。

Adobe Acrobat Reader は Adobe の Web サ イ ト (http://www.adobe.co.jp) で無料

で入手で き ます。

サポー ト 情報

BEA の ド キ ュ メ ン ト に関するユーザか ら のフ ィ ー ド バ ッ ク は弊社に と って非常 に重要です。 質問や意見な どがあれば、 電子 メ ールで docsupport-jp@beasys.com までお送 り く だ さ い。 寄せられた意見については、 WebLogic Server の ド キ ュ メ ン ト を作成および改訂する BEA の専門の担当者が直に目を通し ます。 電子 メ ールの メ ッ セージには、 ご使用の ソ フ ト ウ ェ アの名前 と バージ ョ ン、 およ び ド キ ュ メ ン ト の タ イ ト ル と 日付をお書き添え く だ さ い。 本バージ ョ ンの BEA

WebLogic Server について不明な点があ る場合、 ま たは BEA WebLogic Server の

イ ン ス ト ールおよび動作に問題があ る場合は、 BEA WebSupport (www.bea.com) を通じ て BEA カ ス タ マ サポー ト までお問い合わせ く だ さ い。 カ ス タマ サポー ト への連絡方法については、 製品パ ッ ケージに同梱さ れてい る カ ス タマ サポー ト カー ド に も記載 さ れています。 カ ス タマ サポー ト では以下の情報をお尋ねし ますので、 お問い合わせの際はあ ら か じ めご用意 く だ さ い。  お名前、 電子 メ ール ア ド レ ス、 電話番号、 フ ァ ク ス番号  会社の名前 と 住所

(7)

WebLogic Time Services プ ログ ラマーズガイ ド vii  お使いの機種 と コー ド 番号  製品の名前 と バージ ョ ン  問題の状況 と 表示さ れ るエ ラー メ ッ セージの内容

表記規則

こ のマニ ュ アルでは、 全体を通し て以下の表記規則が使用 さ れています。 表記法 適用 〔Ctrl〕 + 〔Tab〕 複数のキーを同時に押す こ と を示す。 斜体 強調ま たは書籍の タ イ ト ルを示す。 等幅テキスト コー ド サンプル、 コ マ ン ド と そのオプシ ョ ン、 データ 構造体 と そ の メ ン バー、 デー タ型、 デ ィ レ ク ト リ 、 およ びフ ァ イル名 と その 拡張子を示す。 等幅テ キ ス ト はキーボー ド か ら 入力す る テ キ ス ト も 示す。 例 : import java.util.Enumeration; chmod u+w * config/examples/applications .java config.xml float 斜体の等幅テ キスト コー ド 内の変数を示す。 : String CustomerName;

(8)

viii WebLogic Time Services プ ログラ マーズガ イ ド すべて大文 字のテキ ス ト デバ イ ス名、 環境変数、 およ び論理演算子を示す。 例 : LPT1 BEA_HOME OR { } 構文の中で複数の選択肢を示す。 [ ] 構文の中で任意指定の項目を示す。 例 :

java utils.MulticastTest -n name -a address [-p portnumber] [-t timeout] [-s send] | 構文の中で相互に排他的な選択肢を区切る 。

例 :

java weblogic.deploy [list|deploy|undeploy|update]

password {application} {source} ... コ マ ンド ラ イ ンで以下のいずれか を示す。  引数を複数回繰 り 返す こ と がで き る。  任意指定の引数が省略 さ れてい る 。  パ ラ メ ータや値な ど の情報を追加入力で き る。 . . . コ ー ド サンプルま たは構文で項目が省略 さ れてい る こ と を示す。 表記法 適用

(9)

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 1-1

1

WebLogic Time

サービス (非推

奨) のプログラ ミ ング

WebLogic Time API は、 将来の日付 と 時刻に発生する か、 ま たはス ケジ ュール通

り に定期的に繰 り 返すアク シ ョ ン ( ト リ ガ) を ス ケジ ュー リ ングする ための メ カ ニズ ムを提供し ます。 以下の節では、 Time サービ スの機能について概説し ます。

 Time サービ スの非推奨について

 概要

 WebLogic Time のアーキテ ク チャ

 WebLogic Time API

Time

サービスの非推奨について

WebLogic Time サービ スは、 WebLogic Server バージ ョ ン 6.1 よ り 非推奨 にな り

ま し た。 サー ド パーテ ィ のス ケジ ュー リ ング サービ スについては、 『 WebLogic Server ツール』 の 「J2EE ス ケジ ュー リ ング ツール」 を参照し て く だ さ い。 BEA Systems, Inc. では、 WebLogic Server に含まれる、 JMX タ イ マ サービ スの

実装であ る javax.management.timer.Timer の使用をお勧め し ます。 詳細 と マニ ュ アルについては、 『JavaTM Management Extensions (JMX)』 を参照し て く だ さ

(10)

1 WebLogic Time サービ ス (非推奨) のプ ログ ラ ミ ング

1-2 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

概要

Time API を使用する と 、 ク ラ イ アン ト の JVM 内か、 ま たは ク ラ イ アン ト に代

わって WebLogic Server 上で、 ユーザが記述し た任意の ト リ ガを ス ケジ ュー リ ン グ し て実行で き ます。 Time API は、 自動的に発生する ア ク シ ョ ン を設定する た めの信頼でき る分散可能な方法を提供し ます。

注意: Time サービ スは ク ラ ス タ内の個々の WebLogic Server で使用で き ます

が、 サービ ス自体は ク ラ ス タ化でき ません。 WebLogic Time API は、 ロー ド バ ラ ンシン グやフ ェ イ ル オーバな どの ク ラ ス タ機能を利用し ませ ん。

WebLogic Time

のアーキテ ク チ ャ

WebLogic Time は、 他の WebLogic Server API と 多 く の特性を共有する軽量で効

率的な API です。 WebLogic Time は、 Schedulable オブジ ェ ク ト か ら作成 さ れる

ScheduledTriggerDef オブジ ェ ク ト に基づいて構築さ れています。 ScheduledTriggerDef オブジ ェ ク ト は、 ア ク シ ョ ンのス ケジ ュールの開始、 停止、 ま たは反復を実行し ます。 Triggerable オブジ ェ ク ト は、 ス ケ ジ ュールに従っ て 実行さ れ る ア ク シ ョ ン を定義し ます。 オブジ ェ ク ト フ ァ ク ト リ を使用する と 、 ScheduledTrigger を作成でき ます。 オブジ ェ ク ト フ ァ ク ト リ は、 WebLogic Server 内の少ない リ ソ ース を管理する ための明確で使いやすい手法を提供し ま す。 ス ケジ ュールの情報は、 効率的に リ ン ク さ れた一連の リ ス ト に保持 さ れます。 こ の リ ス ト は、 新し い ト リ ガがス ケジ ュー リ ング さ れ、 実行さ れ る と き か ら最も近 い時点でのみ ソー ト さ れます。 た と えば、 火曜日の 12:15:30 か ら 1 週間の ト リ ガを ス ケ ジ ュー リ ング し た場合、 こ れは最初は単純に次の火曜日のス ケジ ュール に挿入 さ れます。 火曜日の正午にな る と 正午 12 時のス ケ ジ ュールが ソ ー ト さ れ、 12 時 15 分にな る と その時刻 (分) の ト リ ガが ソ ー ト さ れます。 こ の よ う にする こ と で、 非常に多 く のス ケジ ュールが設定さ れてい る環境で、 ス ケジ ュー リ ング のオーバーヘ ッ ド が大幅に削減さ れます。

(11)

WebLogic Time API

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 1-3 ま た、 WebLogic Server は、 Time サービ スのユーザ間での タ イ ム ゾーン、 ク ロ ッ ク精度、 およびレ イ テンシの差異を絶えず調整し ます。 WebLogic ト リ ガは、 ミ リ 秒の精度で使用でき る リ アル タ イ ム ト リ ガではあ り ません。 WebLogic ト リ ガ は正常に使用する と 、 およ そ 1 秒以内の精度で確実に機能し ます。

WebLogic Time API

ScheduledTrigger は、 その コ ン ス ト ラ ク タ で以下の 2 つのオブジ ェ ク ト を使用し ます。  weblogic.time.common.Schedulableま たは weblogic.time.common.ScheduleDefのいずれかを実装する オブジ ェ ク ト  weblogic.time.common.Triggerable ま たは weblogic.time.common.TriggerDefのいずれかを実装する オブジ ェ ク ト ScheduledTrigger オブジ ェ ク ト フ ァ ク ト リ メ ソ ッ ド に渡 さ れる オブジ ェ ク ト も、 ク ラ イ アン ト サ イ ド オブジ ェ ク ト の場合があ り ます。 こ の場合、 WebLogic ク ラ イ アン ト はそれ自身の JVM 内で ScheduledTrigger を作成、 ス ケジ ュー リ ング、 および実行し ます。 ク ライ アン ト サ イ ド オブジ ェ ク ト は、 Schedulable (ま たは

ScheduleDef) および Triggerable (ま たは TriggerDef) を実装し なければな り ま

せん。 TimeServicesDef イ ン タ フ ェース も、 ク ライ アン ト と サーバの時刻関連情報を 取得する ための メ ソ ッ ド を提供し ます。  currentTimeMillis()は、 現在のサーバ時刻を、 「ローカル サーバ時刻」 フ ォーマ ッ ト で返し ます。 ローカル サーバ時刻は、 メ ソ ッ ド の呼び出し元 と サーバの間の伝達遅延が調整さ れたサーバの時刻です ( メ ソ ッ ド の呼び出 し 元がサーバの場合はゼ ロ、 ク ライ アン ト ま たは別の WebLogic Server が呼び 出し元の場合は正の ミ リ 秒)。  getRoundTripDelayMillis()は、 ク ライ アン ト と サーバ間の往復遅延を示 す ミ リ 秒数を返す。 こ の メ ソ ッ ド は、 概要で説明 さ れてい る アルゴ リ ズムに 依存し ています。

(12)

1 WebLogic Time サービ ス (非推奨) のプ ログ ラ ミ ング

1-4 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

 getLocalClockOffsetMillis()は、 概要で説明 さ れてい る アルゴ リ ズムに 基づいて、 ク ライ アン ト と サーバの ク ロ ッ ク 間のオフ セ ッ ト を示す ミ リ 秒数 を返し ます。 weblogic.time.common.TimeRepeat ク ラ スは、 Schedulable を実装し ます。 こ のユーテ ィ リ テ ィ ク ラ スは、 反復 ト リ ガの設定に使用でき る作成済みのス ケ ジ ュー ラです。 こ れを使用する場合は、 ト リ ガを繰 り 返す間隔 ( ミ リ 秒単位) を 示す intを渡し てか ら、 その schedule() メ ソ ッ ド を開始時刻を指定し て呼び出 し ます。 警告: ト リ ガが例外を送出し た場合、 その ト リ ガは再ス ケ ジ ュー リ ング さ れま せん。 こ れは、 失敗し た ト リ ガが無期限に再実行さ れない よ う にする た めです。 例外の発生後に ト リ ガを再ス ケジ ュー リ ングする場合、 その例 外を取得し てその ト リ ガを再びス ケ ジ ュー リ ング し なければな り ませ ん。 パ ッ ケージには、 1 つの例外ク ラ ス、 TimeTriggerException が含まれています。

(13)

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 2-1

2

WebLogic Time

を使用し た実装

以下の節では、 WebLogic Time サービ ス (非推奨) の実装方法について説明し ま す。  ク ラ イ アン ト 上での反復 ト リ ガのス ケ ジ ュー リ ング  WebLogic ク ラ イ アン ト か ら の反復サーバサ イ ド ト リ ガのス ケジ ュー リ ング  複雑な ス ケ ジ ュールの設定  再ス ケジ ュー リ ング  ScheduledTrigger の停止

ク ラ イ アン ト 上での反復 ト リ ガのスケ

ジ ュー リ ング

反復 ト リ ガを ス ケジ ュー リ ングする最 も単純なケースは、 WebLogic ク ラ イ アン ト 上でス ケ ジ ュー リ ングおよび実行さ れる ScheduledTrigger を作成する こ と で す。 こ のケースでは、 Schedulable と Triggerable の両方を実装する ク ラ ス を記述 し、 こ れ ら の イ ン タ フ ェースの メ ソ ッ ド を実 装し ます。 次のコー ド 例は、 どの よ う に ト リ ガを ス ケジ ュール し て実行するかを示し た も のです。 import weblogic.time.common.*; import weblogic.common.*; import java.util.*; import weblogic.jndi.*; import javax.naming.*; import java.util.*;

(14)

2 WebLogic Time を使用 し た実装

2-2 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

... }

まず、 TimeServices フ ァ ク ト リ か ら ScheduledTrigger オブジ ェ ク ト を取得する 必 要があ り ます。 TimeServices フ ァ ク ト リ は、getT3Services() メ ソ ッ ド を介し

て WebLogic Server 上の T3Services リ モー ト フ ァ ク ト リ ス タブか ら取得し ます。 注意: ク ラ イ アン ト アプ リ ケーシ ョ ンではな く 、 WebLogic Server イ ン ス タ ン スの TimeServicesイ ン タ フ ェースへのハン ド ルを取得する には、 静的 メ ソ ッ ド の weblogic.common.T3Services.getT3Services()を使用し ます。 次に、 ト リ ガの schedule() メ ソ ッ ド と cancel() メ ソッ ド を呼び出し ます。 次 に例を示し ます

public myTrigger() throws TimeTriggerException { // T3Services ファクトリを取得する T3ServicesDef t3 = getT3Services("t3://localhost:7001"); // ファクトリから ScheduledTrigger を要求する // このクラスをスケジューリングと実行に使用する ScheduledTriggerDef std = t3services.time().getScheduledTrigger(this, this); // スケジューリングを開始する std.schedule(); // クラスは、トリガのスケジューリング後に他の作業を行う場合もある // 終了したら、トリガをキャンセルする std.cancel(); } ク ラ スは、 以下の イ ン タ フ ェースに定義 さ れている メ ソッ ド を実装し なければな り ません。 Schedulable Schedulableイ ン タ フ ェースは、schedule() と い う 1 つの メ ソッ ド を 持っています。 こ の メ ソッ ド を使用する と 、 ト リ ガを実行する時刻を設 定で き ます。

public long schedule(long time) { // 5 秒ごとのトリガをスケジューリングする return time + 5000; } Triggerable Triggerableイ ン タ フ ェースは、 1 つの メ ソッ ド trigger()だけを 持っています。 こ こ では、 ク ラ イ アン ト は時刻が設定さ れた ト リ ガに反 応し てア ク シ ョ ン を起こ し ます。

(15)

WebLogic ク ラ イ ア ン ト か らの反復サーバサ イ ド ト リ ガのス ケジ ュ ー リ ン グ

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 2-3

public void trigger() {

// trigger メソッドはアクションが起こる場所である System.out.println("trigger called"); } こ の コー ド 例には、 ス ケジ ュー ラ と ト リ ガの両方を実装する単一の ク ラ スが含ま れています。 こ れは、 2 つの必須 メ ソ ッ ド が ス ケジ ュー リ ング ま たは実行に必要 な ク ラ ス変数を共有するので便利です。

WebLogic

ク ラ イアン ト からの反復サーバ

サイ ド

ト リ ガのスケジ ュー リ ング

WebLogic フ レーム ワー ク内の任意の場所で実行で き る、 よ り 柔軟な ス ケジ ュー ラ と ト リ ガを記述でき ます。 こ れを実装するには、ScheduleDef と TriggerDef を、 よ り 単純な イ ン タ フ ェース Schedulableと Triggerableの代わ り に実装し

ます。 こ の例では、 WebLogic Server 上 (ま たは WebLogic フ レーム ワーク 内の 任意の場所) で再ス ケ ジ ュー リ ングおよび実行 さ れる反復 ト リ ガを作成する と い

う 、 よ り 柔軟な実装を示し ます。

こ のシナ リ オでス ケジ ュー リ ング済み ト リ ガを作成する手順は次の と お り です。 まず、 ScheduleDef と TriggerDef を実装する ク ラ ス を記述する 必要があ り ます。 こ の例では、 こ れ ら の イ ン タ フ ェース を別々の ク ラ スに実装し ます。

こ れ ら の ク ラ ス を コ ンパ イル し て、 WebLogic Server の serverclassesデ ィ レ ク

ト リ に置き ます。 最後に、 ク ラ イ アン ト アプ リ ケーシ ョ ンか ら こ れ ら の ク ラ ス を使って ScheduledTriggerを作成し ます。

手順

1. ScheduleDef

および

TriggerDef

イ ン タ

フ ェ ースの実装

こ の例では、setServices()および scheduleInit() メ ソ ッ ド が呼び出 さ れる よ う に、 ス ケジ ュー ラは Schedulable ではな く ScheduleDef を実装し ます。 同じ 理由で、 ト リ ガ も Triggerable ではな く TriggerDef を実装し ます。 こ れ ら のオブ

(16)

2 WebLogic Time を使用 し た実装

2-4 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

ジ ェ ク ト は、 ParamSet で初期化で き る と いう 点 と 、T3Servicesス タブを通し て WebLogic サービ スにア ク セ スで き る と いう 点が、 こ れ ら自身が実装する イ ン タ フ ェース と は異な り ます。 こ れ ら 2 つの相違点は、 以下の理由で重要です。 ク ラ イ アン ト サ イ ド のデプ ロ イ メ ン ト と サーバサ イ ド のデプロ イ メ ン ト で異な る バージ ョ ン を作成する必要があ り ません。 こ れは、T3ServicesDefイ ン タ フ ェースが リ モー ト ス タブだか ら です。 オブジ ェ ク ト を動的に イ ン ス タ ン ス化する と きは、 デフ ォル ト コ ン ス ト ラ ク タ を呼び出さ なければな り ません。 し たがって、 Time イ ン タ フ ェース を含むすべ てのサービ ス関連イ ン タ フ ェースでは、 オブジ ェ ク ト の初期化パ ラ メ ータ を渡す こ と がで き る よ う に、ParamSetを引数 と し て取る scheduleInit() メ ソ ッ ド を 実装する必要があ り ます。 次に、 ScheduleDef の単純な実装を示し ます。 package examples.time; import weblogic.common.*; import weblogic.time.common.*; import java.util.*;

class MyScheduler implements ScheduleDef { private int interval = 0;

private T3ServicesDef services;

public void setServices(T3ServicesDef services) { this.services = services;

}

public void scheduleInit (ParamSet ps) throws ParamSetException { interval = ps.getParam("interval").asInt();

}

public long schedule(long currentMillis) { return currentMillis + interval;

} } 次に、 TriggerDef を実装する単純な ク ラ ス を示し ます。 こ の場合、 Trigger のパ ラ メ ータ を設定ま たは取得する必要はあ り ません。 つま り 、 何も し ない メ ソ ッ ド を実装し ます。 package examples.time; import weblogic.common.*; import weblogic.time.common.*;

(17)

WebLogic ク ラ イ ア ン ト か らの反復サーバサ イ ド ト リ ガのス ケジ ュ ー リ ン グ

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 2-5

import java.util.*;

public class MyTrigger implements TriggerDef { private T3ServicesDef services;

public void setServices(T3ServicesDef services) { this.services = services;

}

public void triggerInit (ParamSet ps) throws ParamSetException { // 空のメソッド定義

}

public void trigger(Schedulable sched) { System.out.println("trigger called"); } }

手順

2. WebLogic

ク ラ イアン ト からの

ScheduledTrigger

の作成

ス ケジ ューラ と ト リ ガを設定する こ の メ ソ ッ ド では、getScheduledTrigger() フ ァ ク ト リ メ ソ ッ ド に渡す Scheduler および Trigger オブジ ェ ク ト を作成する 必 要があ り ます。 こ れ らは、「手順 1. ScheduleDef および TriggerDef イ ン タ フ ェー スの実装」 で既に作成し てあ り ます。

こ れ ら の ク ラ スは、 既に コ ンパイ ルし て WebLogic Server の CLASSPATH にデプ ロ イ し てあ り ます。 次に、 こ れ ら の ク ラ ス を使っ てサーバの JVM で実行する ト リ ガを ス ケ ジ ュー リ ングする ク ラ イ アン ト を記述し ます。

ParamSet を使っ て、 ク ラ イ アン ト と WebLogic Server が イ ン ス タ ン ス化する オブ

ジ ェ ク ト と の間で初期化パラ メ ータ を渡し ます。 ScheduleDef を実装する ために 手順 1 で記述し た ク ラ スは、 呼び出し 側が設定するパラ メ ータ 「interval」 に依 存する ため、 1 つの Param を持つ ParamSet を作成し ます。 TriggerDef を実装す

る ために記述し た ク ラ スは、 初期化パラ メ ータは必要 と し ません。

T3ServicesDef t3services = getT3Services("t3://localhost:7001"); // ParamSet を作成して、ScheduleDef オブジェクトの

// 初期化パラメータを渡す。1 つのパラメータ「interval」を // 10 秒に設定する

ParamSet schedParams = new ParamSet(); schedParams.setParam("interval", 10000);

(18)

2 WebLogic Time を使用 し た実装

2-6 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

getT3Services()メ ソ ッ ド を ク ラ イ ア ン ト ク ラ スに追加し ます。 次に、 サーバ

上で ScheduledTrigger を イ ン ス タ ン ス化する、Scheduler および Trigger ラ ッ パー オブジ ェ ク ト を作成し ます。 Scheduler および Trigger ラ ッ パー オブジ ェ ク ト は、 必要であれば、 ターゲ ッ ト ク ラ スの名前 と こ れを初期化する ParamSet を保持し ます。

Scheduler scheduler =

new Scheduler("examples.time.MyScheduler", schedParams); Trigger trigger = new Trigger("examples.time.MyTrigger"); 最後に、 Time サービ ス オブジ ェ ク ト フ ァ ク ト リ を使用し て ScheduledTrigger を 作成し ます。 こ れは、 先ほど作成し た Scheduler と Trigger と い う 2 つの引数を 取 り ます。 ScheduledTriggerDef std = t3.services.time().getScheduledTrigger(scheduler, trigger); getScheduledTrigger() メ ソ ッ ド は、 ScheduledTriggerDef object を返し ます。

実行を開始する ために、 ク ラ イ アン ト は ScheduledTriggerDef の schedule()お よび cancel() メ ソ ッ ド を呼び出し ます。 反復ス ケ ジ ュールを設定する場合、 こ のパ ッ ケージの一部であ る ユーテ ィ リ テ ィ ク ラ ス TimeRepeat も使用でき ます。 次に、TimeRepeatク ラ ス を使用し て、 10 秒ご と に繰 り 返す ScheduledTriggerの定期ス ケジ ュールを設定する単純な コー ド 例を示し ます。 こ こ で も getT3Services() メ ソ ッ ド を使用し て WebLogic サーバサ イ ド サービ スにア ク セ ス し てい ます。

T3ServicesDef t3services = getT3Services("t3://localhost:7001"); Scheduler scheduler = new Scheduler(new TimeRepeat(1000 * 10)); Trigger trigger = new Trigger("examples.time.MyTrigger"); ScheduledTriggerDef std =

t3services.time().getScheduledTrigger(scheduler, trigger); std.schedule();

(19)

複雑なス ケジ ュ ールの設定

WebLogic Time Services プ ログラ マーズガ イ ド (非推奨) 2-7

複雑なスケジ ュールの設定

Schedulable オブジ ェ ク ト の schedule() メ ソ ッ ド を使用する と 、 複雑な ス ケ ジ ュールを自由に設定でき ます。 次に、 ス ケジ ュー リ ングの例 と ヒ ン ト をい く つ か示し ます。 schedule() メ ソ ッ ド の引数で実行時刻を指定する方法は、 以下の 2 通 り です。  現在時刻。 エポ ッ ク か ら の経過時間を ミ リ 秒で指定し ます。  将来の特定日付 と 時刻。 標準 Java ク ラ ス (java.util.Dateな ど) を使った 日付計算の実行結果を ミ リ 秒で指定し ます。 schedule() メ ソ ッ ド は long 値を返し ます。 こ の値を使用する と 、 反復 ト リ ガを 設定で き ます。 単純に、schedule() メ ソ ッ ド が最後に呼び出さ れた時刻 と 、 ス ケジ ュールを繰 り 返す間隔 ( ミ リ 秒) を返し ます。

再スケジ ュー リ ング

こ の例では、schedule() メ ソ ッ ド を記述し て、trigger() メ ソ ッ ド に対する各 呼び出し の間を イ ン ク リ メ ン ト する間隔だけ遅延 させます。 こ の例では、 schedule() メ ソ ッ ド と trigger() メ ソ ッ ド は、 同じ ク ラ スに実装さ れてい ま す。

trigger() メ ソ ッ ド では、 private int の delay を使用し て、 イ ン ク リ メ ン ト する

遅延を設定し ます。 delay は、 ク ラ ス コ ン ス ト ラ ク タ で 0 に初期化さ れます。

trigger を呼び出すたびに、 それは自己のス ケジ ュールを イ ン ク リ メ ン タルに調整

し ます。

public void trigger() {

System.out.println("Trigger called"); // 任意のタスクを実行する . . . System.out.println("Trigger completed"); // delay に 1000 ミリ秒を追加する delay += 1000; }

(20)

2 WebLogic Time を使用 し た実装

2-8 WebLogic Time Services プ ログラ マーズガ イ ド (非推奨)

schedule() メ ソ ッ ド では、 最後にス ケ ジ ュー リ ング さ れた実行時刻に、 最後に

ス ケジ ュー リ ング さ れた実行に よ っ て イ ン ク リ メ ン ト さ れた遅延 ( ミ リ 秒) を足 し た時刻を、 ト リ ガの次の実行 と し て返し ます。 ま た、 ス ケジ ュー リ ング を終了 する ために、 遅延に上限を指定し ます。

public long schedule(long t) {

System.out.println("---"); if (delay > 10000) { System.out.println("Cancelling Timer"); return 0; } else {

System.out.println("Scheduling next trigger for " + delay/1000 + " seconds"); return t + delay; } }

ScheduledTrigger

の停止

ScheduledTrigger は、 以下の 2 つの方法で停止で き ます。  ScheduledTrigger の cancel() メ ソ ッ ド を呼び出し ます。  schedule() メ ソ ッ ド が呼び出さ れ る と きにゼ ロ (0) を返す こ と で、 ス ケ ジ ュー リ ン グ を終了さ せます。 こ れ ら 2 つの メ ソ ッ ド の間には、 若干の違いがあ り ます。schedule() メ ソ ッ ド か らゼ ロ を返す と 、 ス ケ ジ ュールはすぐ に終了し ます。cancel() メ ソ ッ ド を呼 び出す と 、trigger()の次にス ケジ ュー リ ング さ れた イ ン ス タ ン ス ま で ク ロ ッ ク は動作し続け、 そ こ でキ ャ ンセル さ れます。

参照

関連したドキュメント

Windows Server 2012 Windows Server 2016 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 7 VMware vSphere 6 VMware vSphere 6.5 VMware vSphere 6.7 Oracle VM 3 UNIX サーバ.

The demographic and geographic factors affecting rural areas, such as their remoteness and dispersed settlement patterns, low population densities, and aging

Microsoft/Windows/SQL Server は、米国 Microsoft Corporation の、米国およびその

SUSE® Linux Enterprise Server 15 for AMD64 & Intel64 15S SLES SUSE® Linux Enterprise Server 12 for AMD64 & Intel64 12S. VMware vSphere® 7

Since the optimizing problem has a two-level hierarchical structure, this risk management algorithm is composed of two types of swarms that search in different levels,

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

WPA-personage, WPA-PSK (AES) WPA-enterprise, WPA-PSK (TKIP) WPA2-personage, WPA2-PSK (AES) WPA2-enterprise, WPA2-PSK

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence