- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
既存Javaプログラム向け 分化支援システムの開発
修士論文発表会 既存Javaプログラム向け分散化支援システムの開発 東京工業大学大学院 情報理工学研究科 数理計算科学専攻 千葉研究室所属 03M37200 須永 豊 既存ソフトウェアの分散化 ターゲットとするのは機能分散 非分散な既存ソフトウェア 分散用に開発しなおすのはコストがかかる 再利用したいモジュール 分散アプリケーション開発用のモジュールは不向き EJB,Servlet,ORB??? フレームワークに応じた大幅なプログラムの変更 煩雑な修正作業を自動化するツール Addistant,J-Orchestra etc 実例の紹介(ARMSoftware) ARMSoftware[Arita,M. ‘03] 化学物質の構造式?反応式?パスウェイを辿るためのJavaプログラム 2003年度未踏ソフトウェア事業 2万行強の中規模サイズアプリケーション スタンドアロンなプログラム 利用者はホームページからダウンロードし、自分のマシン上で利用 ARMSoftwareの分散化 開発者からの要求 特定の機能のみをサーバで動かしたい DBからパスウェイを探索する機能 DBから構造式の画像を取得する機能 etc プログラムの変更 サーバ側で動かすために特定クラスをリモート化 JavaRMIの仕様に合わせてリモートクラス化 呼び出し元の変更 リモート化によって生じる アプリケーションセマンティクスの変更 アプリケーション毎に異なる処理 アプリケーションセマンティクスの変更(メソッド単位での遠隔配置) あるクラスの特定メソッドのみ遠隔配置 分散化に適していないモジュール分割 従来システムではサポートされていない アプリケーションセマンティクスの変更(マルチユーザ化) 複数ユーザで利用可能に クライアント毎にセッションを用意 セッションの実装方法は様々 リストを使ったり、デザインパターンを用いたり 用意したいセッション処理も異なる 従来の自動分散化システムでは困難な点 アプリケーションセマンティクスの変更を伴う 分散化 分散化に適さないモジュール分割のプログラム 遠隔配置以外の処理も必要 機能拡張等のプログラムの構造を変える処理 遠隔配置を施す以外のプログラム変換は行わない セッション処理の付加等 分散化支援ツールJacrossの提案 分散に関する記述力を強化した分散支援ツール XMLによる、より詳細な分散配置の指定 Aspect指向技術を応用し、プログラムの構造を変化 ソースコードに変更は加えない 分散処理用Aspectとしてモジュール化 遠隔参照の実現等の典型的な分散化処理は自動化 バイトコード変換により実現 典型的な自動分散化処理対象クラスのタイプに応じた配置指定 プロキシマスタ方式に基づき、クラスを遠隔参照出来る用に変換 Replace 対象クラスのコードが可変である場合に適用可能 元クラスを中身がプロキシ化されたもので置換 Rename 参照側クラスのコードが可変である場合に適用可能 クラス名+_Proxyでプロキシクラスを生成 参照側クラス内の対象クラスへの参照をプロキシに変更 Subclass 対象クラスを遠隔とローカルの2箇所で利用したい場合 対象クラスのサブクラスとしてプロキシを実装 指定クラス内からの参照のみをサブクラス化されたプロキシへと変更 permethod メソッド単位で分散化処理 メソッドを指定し、対象メソッドのみを遠隔配置 各方針と併用 ローカルと遠隔でそれぞれ1つずつオブジェクトを生成 遠隔メソッド呼び出し時のみ遠隔オブジェクトを利用 遠隔とローカルのオブジェクトの反映が必要 自動化すべきではない箇所(実装は様々) 分散処理用Aspect ソースコードに変更は加えない Inter-type Declaration 元プログラムにフィールドとメソッドを追加する。 インタセプタ 元プログラムの制御フローを変える 利用者の指定した箇所で割り込み処理を行う。 XMLを利用したバインド Inter-type Declarationとインタセプタをバインドする為の記述は分散ポリシー内で行う Inter-type Declaration フィールドやメソッドを追加する Javaで定義 追加されたメソッドもリモート化の対象に 追加先を予測して指示 インタセプタ 制御フローを変える為のプログラム プログラムの指定した箇所で割り込み処理を行う インタセプタはJavaで定義 JacrossInterceptor インタセプタは、このクラスを継承し、全てのメソッドはObject型の戻り値とInvocation型の引数を持つ → 制約 proceed() : 割り込み元の操作を実行するメソッド
文档评论(0)