JP6102136B2 - モジュール管理装置、モジュール管理システム及びモジュール管理方法 - Google Patents

モジュール管理装置、モジュール管理システム及びモジュール管理方法 Download PDF

Info

Publication number
JP6102136B2
JP6102136B2 JP2012206416A JP2012206416A JP6102136B2 JP 6102136 B2 JP6102136 B2 JP 6102136B2 JP 2012206416 A JP2012206416 A JP 2012206416A JP 2012206416 A JP2012206416 A JP 2012206416A JP 6102136 B2 JP6102136 B2 JP 6102136B2
Authority
JP
Japan
Prior art keywords
bundle
definition information
module
folder
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012206416A
Other languages
English (en)
Other versions
JP2014063237A (ja
Inventor
政義 大内
政義 大内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012206416A priority Critical patent/JP6102136B2/ja
Priority to US14/028,662 priority patent/US9274759B2/en
Priority to CN201310430522.0A priority patent/CN103677894B/zh
Publication of JP2014063237A publication Critical patent/JP2014063237A/ja
Application granted granted Critical
Publication of JP6102136B2 publication Critical patent/JP6102136B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、オブジェクト指向言語で記述されたプログラムのモジュールを一元管理するモジュール管理基盤において、定義情報の衝突を回避させるモジュール管理装置、モジュール管理システム及びモジュール管理方法に関する。
Java(登録商標)に代表される委譲モデルのクラスロード機構を持つオブジェクト指向言語では、クラスをパッケージ名と組み合わせた完全修飾クラス名で区別している。これによって同じ名前を持つクラスであっても、パッケージ名を見ることで異なるクラス定義であると区別できている。このような言語では、例えば特許文献1にあるように、提供機能ごとにパッケージやクラスをひとまとまりとしたモジュールとしてファイル化し、配布することが可能となっている。
また、コンピュータの高性能化や開発効率の向上によって、莫大な数のモジュールを使用した大規模なシステムも増えてきている。このようなシステムでは、システムを構成するモジュール間に依存関係があり、特定のバージョンのモジュールが他の特定のモジュールを参照して、特定の機能を提供することで成り立っている。
しかしながら、システム更新や機能追加によってシステムの規模が大きくなるにつれて、モジュールの名前や提供機能、バージョン、配置場所などの管理が煩雑になる。そのため、モジュール名やパッケージの衝突、想定外のバージョン依存、モジュールの重複などの問題が生じてきた。
そこで、近年では、モジュールをバンドルという単位で管理するモジュール管理基盤が開発されている。バンドルは、モジュールに加えて、そのバンドルの定義情報を含んでいる。定義情報とは、シンボリックネームという名前やバージョン番号、参照するバンドル、参照されるバンドルといったものである。モジュール管理基盤では、シンボリックネームとバージョン番号のペアでモジュールを区別する。
モジュール管理基盤は、起動時に管理下のバンドルのバージョンや依存関係を検証して、バンドルの定義情報の衝突や依存関係の不整合を事前に検知することができる。また、バンドルのライフサイクルを管理することによってバンドルの更新を動的に行なうことができる。そのため、システムを停止できないような環境においても、バンドルでの更新が可能となっている。最近では、モジュール管理基盤は、アプリケーションサーバや統合開発環境に採用され、動的なモジュールの追加・削除や、無停止でのモジュール更新といった特長が有効に活用されている。
例えば、特許文献1には、モジュールのシンボリックネーム、バージョン番号や依存関係などの定義情報を含むマニフェストファイルを自動生成することで、モジュール管理基盤におけるモジュールの管理負荷を軽減する技術が開示されている。
このように、モジュール管理基盤では、プログラムを機能ごとに分割したモジュールを名前・バージョンなどの定義を含むバンドルによって管理する。そして、モジュール管理基盤は、起動・停止の状態制御や他のバンドルとの依存関係を確認して、それらの機能をアプリケーションにサービスとして提供することができる。
しかしながら、これらのモジュール管理基盤の機能によって、アプリケーションにとっては便利になった反面、モジュールの管理の厳密性が増し、モジュールの定義情報の設定・更新には以前にも増して注意が必要となってきた。
特開2012−93979号公報
特許文献1のようなモジュール管理基盤では、バージョン番号とシンボリックネームのペアが基盤全体で一意である必要がある。そのため、モジュール管理基盤上に同じバージョン番号とシンボリックネームを持つバンドルが既に存在していた場合、後から追加したバンドルはバンドルの定義情報の衝突によるエラーによってロードされないという課題があった。
また、一般的なモジュール管理基盤では、衝突が起こりうるバンドルをロードし、ロードした順番でバンドルIDを付与することができる。しかしながら、管理対象から外れたバンドルの使用を想定して追加された他のバンドルが間違ったバンドルを参照してしまい、想定外の実行結果を招く可能性があるという課題があった。
本発明の目的は、バンドル本体を修正することなくバンドルの定義情報の衝突を解決してバンドルの共存を可能とすると共に、バンドル間の依存関係を正しく構成するモジュール管理装置、モジュール管理システム、モジュール管理方法及びその管理方法を用いたプログラムを提供することにある。
本発明のモジュール管理装置は、オブジェクト指向言語で記述されたプログラムからなるモジュール及びモジュールの属性を含む定義情報を有するバンドルと、複数のバンドルからなるモジュール群と、を一元管理するモジュール管理基盤の起動時においてバンドルをフォルダからロードする際に、異なるバンドル間で定義情報が衝突する場合、定義情報を動的に変更し、バンドルの参照関係を整合する。
本発明のモジュール管理方法は、オブジェクト指向言語で記述されたプログラムからなるモジュール及びモジュールの属性を含む定義情報を有するバンドルと、複数のバンドルからなるモジュール群と、を一元管理するモジュール管理基盤の起動時においてバンドルをフォルダからロードする際に、異なるバンドル間で定義情報が衝突する場合、定義情報を動的に変更し、バンドルの参照関係を整合する。
本発明によれば、同一の定義情報を含むバンドルの定義情報の衝突を回避し、それらの両方のバンドルを動作させて、複雑な依存関係を持つ複数のモジュール群が独立に並行して動作することができる。
本発明の実施形態に係るモジュール管理装置の論理構成を示すブロック図である。 本発明の実施形態に係るモジュール管理基盤の構成例である。 本発明の実施形態に係る共通バンドルのロード処理を示すフローチャートである。 本発明の実施形態に係る個別バンドルのロード処理を示すフローチャートである。 本発明の実施形態に係るバンドル情報テーブルの一例である。 本発明の実施形態に係るシンボリックネーム変更管理テーブルの一例である。 本発明の実施例1に係るモジュール管理基盤におけるモジュール群の構成図である。 本発明の実施例1に係るバンドルの関係を示す図である。 本発明の実施例1に係るフォルダ構成を示す図である。 本発明の実施例1に係るモジュール管理基盤上のバンドルの状態を示す図である。 本発明の実施例2に係るフォルダ構成を示す図である。 本発明の実施例2に係るモジュール管理基盤上のバンドルの状態を示す図である。 本発明の実施例3に係るフォルダ構成を示す図である。 本発明の実施例3に係るモジュール管理基盤上のバンドルの状態を示す図である。 本発明の実施例4に係るフォルダ構成を示す図である。 本発明の実施例4に係るモジュール管理基盤上のバンドルの状態を示す図である。
本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態において、バンドルは、OSGi(Open Services Gateway initiative)に特有の属性として、シンボリックネーム、バージョン情報などのメタデータが記述されたマニフェストファイルを有するものとする。ただし、以下の実施形態は本発明の一例であり、JAVA以外のオブジェクト指向言語を用いたとしても、OSGiと同様の属性管理がなされるモジュール管理システムには、本発明の実施形態に係る手法を適用できる。
(実施形態)
図1は、本発明の実施形態に係る衝突回避装置1の論理構成を示すブロック図である。なお、本実施形態に係る衝突回避装置1は、モジュールの定義情報の衝突を回避する処理を行うモジュール管理装置に相当する。図2は、本発明の実施形態に係るモジュール管理基盤の構成例である。
図3は、本発明の実施形態に係る共通バンドルのロード処理を示すフローチャートである。図4は、本発明の実施形態に係る個別バンドルのロード処理を示すフローチャートである。
また、図5にはバンドルの定義情報や依存関係などをまとめたバンドル情報テーブル50(第1のテーブル)を、図6にはバンドルのファイルパスとシンボリックネームの変更履歴をまとめたシンボリックネーム変更管理テーブル60(第2のテーブル)を示した。なお、バンドル情報テーブル50及びシンボリックネーム変更管理テーブル60は、通常主記憶装置であるメモリに格納されているものとする。ただし、バンドル情報テーブル50及びシンボリックネーム変更管理テーブル60は、図1の構成要素に含めてもよく、情報格納部13の内部に格納することもできる。
(構成)
図1において、本実施形態に係る衝突回避装置1は、フォルダ走査部10と、ロード処理部11と、バンドル依存解決部12と、情報格納部13と、定義変更部14と、衝突検知部15とを備えている。
フォルダ走査部10は、共通バンドル配置フォルダや個別バンドル配置フォルダ内部に、未処理のバンドルファイルがあるかどうかを確認する。なお、これ以降、共通バンドル配置フォルダをmodulesフォルダと記載し、個別バンドル配置フォルダをindividualsフォルダと記載する。
ロード処理部11は、バンドルの読み込み処理を行う。バンドルの読み込み処理では、バンドルの情報をバンドル情報テーブル50に追加し、その更新されたバンドル情報を情報格納部13に格納する。
依存解決処理部12は、バンドルの依存関係の解決処理を行う。依存解決処理部12は、バンドルファイルがロードされると、そのバンドルファイルの参照関係を整合させるために、参照先の定義情報に合わせて依存バンドルのリンク処理を行う。
情報格納部13は、バンドルやバンドル情報を格納する。また、情報格納部13は、テーブルの情報を追加・更新する。情報格納部13は、バンドル情報テーブル50及びシンボリックネーム変更管理テーブル60といった、バンドルに関する情報を格納してもよく、それらのテーブルに記録する情報のみを格納してもよい。
定義変更部14は、バンドルの定義情報を変更する。バンドルの定義情報は、例えば、シンボリックネームやバージョン情報などのように、バンドルを一意に特定する文字列、記号列などからなるメタ情報を有する。例えば、後述するように、シンボリックネームの先頭にサブフォルダ名の一部もしくは全部を付したり、アンダーバーなどの記号や文字を付したりすることによって、定義情報の変更をすることができる。
なお、定義情報に関しては、シンボリックネームに限らず、そのバンドルを一意に特定できるような情報であればよい。また、定義情報の変更に関しても、特定の文字の追加や削除、特別に定義された変更条件、一般的な文字列や記号列の変更方法などを用いることができる。
衝突検知部15は、図5の定義変更部14で変更された定義情報によって、バンドルの定義情報の衝突が起こるか否かを検知する。具体的には、バンドル情報テーブル50を参照し、ロード済みのバンドルと、後からロードされたバンドルの間で衝突が起きるか否かを検知することになる。
図2は、本発明の実施形態に係るモジュール管理基盤21の構成例を示す。なお、図2においては、バンドルの参照関係を矢印で示している。矢印の始点にあるバンドルは、矢印の終点にあるバンドルを参照する。図2の上段図における点線の矢印は、間違った参照によって衝突が起こることを示している。
図2の上段は、モジュール群A22に属するバンドルa24、バンドルb25及びバンドルc26、モジュール群B23に属するバンドルd27、バンドルe28及びバンドルc29を、定義情報の変更なしにモジュール管理基盤21で動作させる状態を示している。なお、図2において、シンボリックネームはそれぞれのバンドル名と同一であるとする。また、図2の例においては、モジュール群A22のバンドルを先にロードし、その後モジュール群B23のバンドルをロードするものとする。
図2の上段では、モジュール群A22のバンドルb25は、バンドルa24及びバンドルc26を参照している。また、モジュール群B23のバンドルe28は、バンドルd27及びバンドルc29を参照している。
また、図2の上段において、モジュール群A22のバンドルc26と、モジュール群B23のバンドルc29は、シンボリックネームなどの定義情報は同じでありながら異なるバンドルであるものとする。
ここで、図2の上段の構成とした場合、後からロードされたモジュール群B23に属するバンドルe28は、先にロードされたモジュール群A22のバンドルc26を誤って参照し、バンドルの定義情報の衝突が起きてしまう。バンドルe28は、本来ならばモジュール群B23に属するバンドルc29を参照して動作すべきである。そのため、モジュール群B23のバンドルe28モジュール群A22に属するバンドルc26を参照してしまうと、アプリケーションは意図しない動作をすることにつながる。
図2の下段は、本発明の実施形態に係るモジュール管理基盤21の構成例を示す。図2の下段の例では、モジュール群A22に属するバンドルa24、バンドルb25及びバンドルc26のシンボリックネームは、モジュール管理基盤21にロードされる際、それぞれバンドルAa、バンドルAb及びバンドルAcへと動的に変更される。同様に、モジュール群B23に属するバンドルd27、バンドルe28及びバンドルc29のシンボリックネームは、それぞれバンドルBd、バンドルBe及びバンドルBcと変更される。なお、シンボリックネームの変更の際には、後述するようにバンドルの参照関係の変更も同時に行うものとする。
その結果、図2の下段の例では、図2の上段のような誤った参照はされず、バンドルの参照関係が正しく維持されることになる。よって、モジュールB群23に属するバンドルBeは、誤ってモジュール群A22のバンドルAcを参照することもないため、バンドルの定義情報の衝突は回避され、アプリケーションは正しい動作をすることになる。
(動作)
本発明の実施形態に係るモジュール管理装置では、上述の構成を備えた衝突回避装置を使って、以下の動作でバンドルの定義情報の衝突を回避する。
以下の動作では、工程1において、共通バンドル配置フォルダであるmodulesフォルダ内におけるバンドルのロード処理を行う。続いて、工程2において、個別バンドル配置フォルダであるindividualsフォルダのロード処理を行う。
〔工程1〕
まず、図3を用いて、モジュール管理基盤21が起動し、バンドルのロード処理を実行する工程1を説明する。
図3において、工程1のロード処理では、まず、フォルダ走査部10が、modulesフォルダに未処理のバンドルファイルがあるか否かを確認する(ステップ31)。
未処理のバンドルがあればロード処理に移行する(ステップ32へ進む)。未処理のバンドルがなければ、工程1のフローは終了とし、工程2のロード処理に移行する。
次に、衝突検知部15がバンドル情報テーブル50を参照して、ロード済みバンドルの定義情報(第1の定義情報に相当)と未処理バンドルの定義情報(第2の定義情報に相当)の衝突が発生するか否かを確認する(ステップ32)。
ロード済みバンドルと未処理バンドルの定義情報が衝突していない場合、ロード処理部11は未処理バンドルの読み込み処理を行なう(ステップ33)。
ステップ32において、ロード済みバンドルと未処理バンドルの定義情報との衝突が発生した場合は、エラーとしてロード処理を終了する。
バンドルの読み込み処理では、バンドル情報テーブル50にバンドルの情報を追加し、情報格納部13にバンドル情報を格納する(ステップ33)。
その後、バンドル依存解決処理として、依存解決処理部12は依存バンドルのリンク処理を行う(ステップ34)。バンドル依存解決処理が終了したら、ステップ31に戻る。
依存するバンドルが同じフォルダ内にあり(ステップ35でYes)、それが未処理のバンドルであれば(ステップ36でYes)、フォルダ走査部10はそのバンドルのロード処理を行なう(ステップ33)。
ここで、ステップ33〜36の処理は、バンドルの定義情報の衝突が解決されるまで繰り返される。
同一フォルダに依存するバンドルがないか(ステップ35でNo)、もしくは依存するバンドルに未処理のバンドルがない場合(ステップ36でNo)、modulesフォルダ内にある他の未処理バンドルのロード処理を行う(ステップ31に戻る)。
以上が工程1の手順である。なお、以上の手順は本実施形態の一例であり、工程1においては、共通バンドル配置フォルダから、バンドルの定義情報の衝突がなく、正しい依存関係でバンドルをロードできさえすればよい。
このように、modulesフォルダ内における全てのバンドルのロード処理(工程1)が完了すると、フォルダ走査部10は、individualsフォルダ内のバンドルのロード処理(工程2)に移る。
〔工程2〕
次に、図4を用いて、individualsフォルダのロード処理を実行する工程2を説明する。
図4において、フォルダ走査部10は、individualsフォルダ内に未処理のサブフォルダがあるか否かを確認する(ステップ41)。
未処理のサブフォルダがある場合(ステップ41でYes)、そのサブフォルダに移動する(ステップ42)。
サブフォルダがない場合(ステップ41でNo)は、ロード処理を終了する。
フォルダ走査部10は、サブフォルダに移動すると、サブフォルダ内に未処理のバンドルがあるか否かを確認する(ステップ43)。
定義変更部14は、未処理のバンドルをみつけると、そのバンドルの定義情報を変更する(ステップ44)。
図2に示した例では、ステップ44に示したバンドルの定義情報の変更において、バンドルの定義名であるシンボリックネームの先頭にサブフォルダ名を付加し、シンボリックネーム変更管理テーブル60に情報を追加している。
その後、衝突検知部15は、バンドル情報テーブル50及びシンボリックネーム変更管理テーブル60を参照して、衝突の有無を確認する(ステップ45)。ここで、ステップ44、45は、バンドルの定義情報の衝突が解決されるまで継続される。なお、これらのステップで衝突があった場合に変更した定義情報は、第3の定義情報に相当する。
バンドルの定義情報の衝突が発生していない場合(ステップ45でYes)、ロード処理部11が読み込み処理を行う(ステップ46)。
バンドルの定義情報の衝突が発生していた場合(ステップ45でNo)、再度バンドルの定義情報を変更する(ステップ44に戻る)。
例えば、ステップ45において、バンドルの定義情報の衝突が発生していた場合、バンドルのシンボリックネームにアンダーバーなどの記号や文字を追加して、さらにシンボリックネームを衝突しない値に変更する(ステップ44)。
ロード処理が完了すると、情報格納部13にバンドル情報を配置し、バンドル情報テーブル50とシンボリックネーム変更管理テーブル60に情報を追加する。
ロードされたバンドルは、依存解決処理部12によって依存バンドルのリンク処理が行われる(ステップ47)。この際、ロードしたバンドルと依存するバンドルが同フォルダ内のものであれば、バンドル情報テーブル内の各バンドルの依存シンボリックネームを変更後の値に書き換えて、シンボリックネームを変更した同フォルダ内のバンドルを参照できるようにする。
依存するバンドルが同フォルダにあり(ステップ48でYes)、それらが未処理のバンドルであれば(ステップ49でYes)、フォルダ走査部10はそのバンドルのロード処理を行う(ステップ46)。
依存するバンドルが同フォルダにない(ステップ48でNo)、もしくは未処理のバンドルが無ければ(ステップ49でNo)、他の未処理バンドルのロード処理を行う(ステップ41へ戻る)。
上記のステップ43〜49を繰り返し、サブフォルダ内に未処理のバンドルが無くなったら他のサブフォルダに移動し、ロード処理を行なう(ステップ41へ戻る)。
以上が工程2のフローである。なお、以上のフローは本実施形態の一例であり、工程2においては、個別バンドル配置フォルダから、バンドルの定義情報の衝突がなく、正しい依存関係でバンドルをロードできさえすればよい。
以上の工程1及び工程2を終えれば、全てのバンドルのロードが完了する。
以上のように、本発明の実施形態に係る衝突回避装置による処理は、フォルダ内のバンドルを連続してロードするだけである。その結果、工程1でロードしたバンドルはモジュール管理基盤全体で共有することができ、工程2でロードしたindividualsフォルダ以下のサブフォルダ内のバンドルは、そのフォルダ内にあるバンドルとの依存関係を構成して動作することができる。
本発明では、モジュール管理基盤で管理されたモジュールが同じ空間内で参照されることによる定義情報の衝突や誤参照を、各バンドルが所属するフォルダに基づいて定義情報を変更して空間を分けることで解決する。これにより、バンドルの定義情報の衝突を避けることが出来るほか、バンドルをフォルダで分けることによってモジュール管理基盤上でバンドルの共有化と個別化が実現できる。
また、本発明の実施形態に係るモジュール管理装置によれば、OSGiにおいて、バンドルをロードするときにメモリ上で定義情報を書き換えることで衝突を回避したロードを可能とし、正しい依存関係の構築を行なうことができる。
一般に、モジュールを構成するバンドルは、バージョン番号とシンボリックネームのペアが基盤全体で一意である必要がある。そのため、モジュール管理基盤上に同じバージョン番号とシンボリックネームを持つバンドルが既に存在していた場合、後から追加したバンドルは衝突によるエラーでロードされない。
一般的なモジュール管理基盤の設定によっては、衝突が起こりうるバンドルをロードすることも可能である。その場合、ロードした順番で付与されるバンドルID(Identification)というIDのみによって区別されることになる。そのため、間違いなく目的のバンドルを特定することが難しくなっている。
このようにして、一般的なモジュール管理基盤においては、衝突したバンドルは管理対象から外れるものの、そのバンドルの使用を想定して追加された他のバンドルは先にロードされていたバンドルと依存関係を構築する。そのため、状況によってはバンドルの参照関係が変わってしまい、想定外の実行結果を招く可能性がある。
これまでは、このような一般的なモジュール管理基盤の問題を解決するために、バンドルのシンボリックネームの衝突を考慮してバンドルを作成し、衝突が発生した際には逐一バンドルを修正する必要があった。
また、一般的なモジュール管理基盤では、例えば、システムのある機能を提供するモジュール群を特定のモジュール管理基盤上に移行した場合、ブラックボックスであるモジュール群に含まれているバンドルがOSS(Open Source Software)などを基にして作られていると、既に登録されていた同じOSSを基にしたバンドルと定義情報の衝突が発生し、登録できない状況が考えられる。
このような状況になると、一般的なモジュール管理基盤では、衝突したバンドルのうち初めに登録されていたバンドルを使用し、そのバンドル内の定義情報に沿って依存関係を構成する。しかしながら、衝突した2つのバンドルが全く同じものであるとはかぎらない。そのため、2つのバンドルが異なる機能を提供していたり、異なるバンドルに依存していたりした場合、モジュール群全体として想定とは異なる依存関係を構成してしまうことで挙動が変わってしまうことになった。
本発明の実施形態では、プログラムを機能ごとに分割したモジュールを一元管理するモジュール管理基盤において、一般的な管理基盤と比べてモジュールを分けて配置し、ロードする順番を変えている。そのため、ロード時にメモリ上で定義情報を動的に変更するモジュール(バンドル)の定義名(シンボリックネーム)の衝突や、それによって引き起こされる誤った依存関係の構築を、モジュール自体を修正することなく回避することができる。
また、本発明の実施形態における定義情報の変更では、例えば、ロード時にバンドルの定義名を変更したり、フォルダ内のバンドルを解析後再構築して1つのバンドルにまとめたり、衝突しない定義情報を付け直す方法を用いてバンドルの定義情報の衝突を回避する。
これによって、これまではモジュールの衝突によって動作しなかったような莫大な数の複雑な依存関係をもったモジュール群の並行動作が可能となり、システムの拡張、運用、保守の容易性が実現できる。なお、本発明の実施形態の説明で用いた例は一例であり、本発明の範囲を限定するものではない。
以下において、実施例をあげて本発明について詳細に説明していく。なお、それぞれの実施例中で用いるバンドル情報テーブルおよびシンボリックネーム変更履歴テーブルは、図5及び図6のテーブルに記載された値とは異なる情報をもつ。しかしながら、項目名や情報を更新する箇所を明示するために、バンドル情報テーブル50およびシンボリックネーム変更履歴テーブル60を参照して説明していくが、実際の値を反映させたテーブルの図面は省略する。
(実施例1)
図7〜10を用いて、実施例1を説明する。実施例1は、モジュール管理基盤A71で動作しているモジュール群A72と、モジュール管理基盤B73で動作しているモジュール群B74を、モジュール管理基盤C101に移植して並行稼働させる例である。
(構成)
図7には、モジュール管理基盤A71、モジュール管理基盤B73におけるバンドルの構成図を示した。図8には、バンドルa002、バンドルb002、バンドルx002の関係を示した。図9には、モジュール管理基盤C101が動作する環境におけるバンドルa001、a002、b001、b002のフォルダ構成を示した。
モジュール群A72は、バンドルa001及びバンドルa002から構成されている。バンドルa001は、バンドルa002のpというパッケージを参照している。また、モジュール群B74は、バンドルb001及びバンドルb002から構成されている。バンドルb001は、バンドルb002のpというパッケージを参照している。
バンドルa002とバンドルb002は、ともにバンドルx002を継承して作られている。そのため、バンドルa002及びバンドルb002は、共通のパッケージpのほか、それぞれ異なるクラスを持つ。また、バンドルa002とバンドルb002は、バンドルの定義情報に、共通のシンボリックネームsnameとバージョン番号1.0を持つ。
(動作)
図10には、実施例1において、バンドルのロード後におけるモジュール管理基盤C101の状態を示す。図10の上段は、シンボリックネームを変更しない一般例であり、下段はシンボリックネームを変更する本発明に係る実施例である。図10の上段では、バンドルb001は、後からロードされたバンドルb002を参照すべきところ、先にロードされたa002を参照していることを点線の矢印で示しており、その結果バンドルの定義情報の衝突が起こることを模式的に示している。
本発明に係る実施例1の説明を、図10の下段の図を用いて説明する。
モジュール管理基盤C101が起動すると、フォルダ走査部10は、あらかじめバンドルの格納先として設定されていたmodulesフォルダを確認し、バンドルのロードを開始する。
実施例1では、modulesフォルダ内にはバンドルを配置していないので、ロード処理は行なわれない。そのため、フォルダ走査部10はここでは何も行なわずに、individualsフォルダ以下のサブフォルダに格納されているバンドルのロードを開始する。
まず、フォルダ走査部10は、individuals/Aフォルダ以下にあるモジュール群A72のロードを行なう。
モジュール群A72のロードでは、Aフォルダ内のバンドルをロードする際に、定義変更部14がバンドルのシンボリックネームの先頭に「A」を付加してロードを行なう。その結果、バンドルa001のロードでは、バンドルa001のシンボリックネームはAa001となる。このとき衝突検知部15は、図5のバンドル情報テーブル50と図6のシンボリックネーム変更管理テーブル60を参照して、ロード済みバンドルと新たにロードするバンドルとの衝突の有無を確認する。
実施例1では、現時点では読み込んだバンドルが無いため、エラーは発生せずにロードが成功する。
バンドルのロード処理が成功すると、情報格納部13にバンドルを配置し、メモリ上のバンドル情報テーブル50とシンボリックネーム変更管理テーブル60に情報を追加する。
バンドルa002のロードについても同様に、定義変更部14がバンドルa002のシンボリックネームをAsnameに変更し、衝突検知部15が衝突の有無を確認し、情報格納部13がテーブルへの情報の追加を行なう。
このとき、依存解決処理部12は、バンドルa002がバンドルb001を参照していることを確認し、バンドル情報テーブル50の依存バンドル名をa001からAa001に変更するリンク処理を行う。
次に、フォルダ走査部10は、individuals/Bフォルダ以下にあるモジュール群B74のロードを行なう。
バンドルb001のロードでは、定義変更部14がバンドルb001のシンボリックネームをBb001に変更して、衝突検知部15でロード済みバンドルとの衝突を確認して、情報格納部13にバンドル情報の追加を行なう。ここで、バンドルb002のロードでは、定義変更部14がバンドルb002のシンボリックネームをBsnameに変更して、衝突検知部15が衝突の確認をし、情報格納部13がテーブルへの情報の追加を行なう。また、ここでもバンドルb002はバンドルb001に依存するので、依存解決処理部12がバンドルb002のバンドル情報テーブル50における依存バンドル名をb001からBb001に変更する。
この結果、モジュール群A72とモジュール群B74は、それぞれのバンドル間での依存関係を保ったままモジュール管理基盤C101にロードされ、モジュール管理基盤A71、モジュール管理基盤B73で動作していたように独立して動作する。
実施例1では、individuals/Aフォルダのバンドルa002と、individuals/Bフォルダのバンドルb002のシンボリックネームを変更したことによって、バンドルの定義情報の衝突を回避した(図10の下段)。仮にシンボリックネームの変更を行なわない場合、バンドルa002のシンボリックネームsnameとバンドルb002のシンボリックネームsnameとの間で衝突が発生し、エラーとなっていた(図10の上段)。
ここで、individuals/Aフォルダ及びindividuals/Bフォルダのロードの順番は、モジュール管理基盤の実装に依存する。本発明の実施形態においては、モジュール群B74が先にロードされた場合でも、モジュール群A72内のバンドルでシンボリックネームの変更処理が実行され、動作する。
(実施例2)
実施例2は、モジュール管理基盤で3つのバンドルが動作し、二つのバンドルと参照・被参照関係をもつバンドルのシンボリックネームを変更する例である。
実施例2のフォルダ構成を図11に、全体構成図を図12に示す。図12の上段は、シンボリックネームを変更しない一般例であり、下段はシンボリックネームを変更する本発明の実施形態に係る実施例である。図12の上段では、バンドルd001は、後からロードされたバンドルd002を参照すべきところ、先にロードされたa002を参照していることを点線の矢印で示しており、その結果バンドルの定義情報の衝突が起こることを模式的に示している。
(構成)
図12の下段図を用いて、実施例2の説明をする。3つのバンドルから構成されるモジュール群D113において、各バンドルをそれぞれバンドルd001、バンドルd002、バンドルd003とする。バンドルd001はバンドルd002のパッケージpを参照し、バンドルd002はバンドルd003のパッケージpを参照するものとする。
バンドルd002は、バンドルa002及びバンドルb002と同様に、バンドルx002を継承しており、共通のパッケージpのほか、固有のクラスをもつ。
バンドルd002のバンドル定義情報は、バンドルa002と共通のシンボリックネームsnameを持ち、バンドルd002とバンドルa002の両方をロードした場合、そのままでは衝突が発生するものとする。
(動作)
本発明に係る実施例2の説明を、図12の下段の図を用いて説明する。
まず、モジュール管理基盤C111がmodulesフォルダのロード処理を完了し、モジュール群D113のロード処理を行なう。
モジュール群D113はindividuals/Dフォルダに入っている。まず、フォルダ走査部10によってバンドルd001がロードされる。
定義変更部14がバンドルd001のシンボリックネームをDd001に変更し、衝突検知部15でバンドル定義情報の衝突は発生しないことを確認して、情報格納部13にバンドル情報を配置してロードが完了する。
バンドルd002のロード処理では、定義変更部14がd002のシンボリックネームをDsnameに変更してロードを行なうことで、バンドルd002とバンドルa002との衝突を回避する。このとき依存解決処理部12は、ロード済みであるバンドルd002を参照するバンドルd001に関するメモリ上のバンドル情報テーブル50の参照先を、Dsnameに書き換える。
最後に、バンドルd003のロード処理を実行する。バンドルd003のロード処理では、定義変更部14がバンドルd003のシンボリックネームをDd003に変更して、衝突検知部15で衝突が無いことを確認し、情報格納部13にバンドルを配置させる。
その後、依存解決処理部12は、シンボリックネーム変更管理テーブル60において、依存するバンドルd002のシンボリックネームが変更になっていることを確認して、バンドル情報テーブル50上におけるバンドルd003の被参照バンドルのシンボリックネーム名をDsnameに変更する。
このように、バンドルd001及びバンドルd003のバンドルd002に対する参照情報を変更してロード処理を完了する。
(実施例3)
実施例3は、individualsフォルダ以下のサブフォルダにあるバンドルが、modulesフォルダのバンドルを参照する例である。
実施例3のフォルダ構成を図13に、ロード処理が完了した時点の全体構成図を図14に示す。図14の上段は、シンボリックネームを変更しない一般例であり、下段はシンボリックネームを変更する本発明の実施形態に係る実施例である。図14の上段では、バンドルe001は、後からロードされたバンドルe002を参照すべきところ、先にロードされたa002を参照していることを点線の矢印で示している。その結果、バンドルの定義情報の衝突が起こることを模式的に示している。なお、図14において、モジュール群E142を2つに分けて描いているのは、それらのバンドルが存在するフォルダの違い、また、シンボリックネームの変更の有無を区別するためである。また、以下の説明においては、モジュール群A72は、既にロードされていたものとする。
(構成)
モジュール群E142は、バンドルe001、バンドルe002、バンドルe003の3つのバンドルから構成される。バンドルe002は、バンドルa002と同様に、バンドルx002から継承して作られているとする。バンドルa002とバンドルe002は共通のシンボリックネームsnameを持つため、同時にロードすると衝突が発生するものとする。また、バンドルe001はバンドルe002のパッケージpを参照し、バンドルe002はバンドルe003を参照する。
ただし、バンドルe003は共通的な機能を提供するバンドルとして、他のバンドルも利用できるものとする。さらにモジュール群E142に属するバンドルは、全てモジュール管理基盤E(図示しない)においては同ディレクトリに格納されていたとする。なお、バンドルe001、バンドルe002をindividuals/Eフォルダに配置するが、バンドルe003は共通的な機能を提供するバンドルなので、modulesフォルダに配置し、他のバンドルも参照できるようにする。
(動作)
図14の下段の図を用いて実施例3に係るモジュール管理装置の動作を説明する。
まず、モジュール群E142をモジュール管理基盤C141に移行し、ロードさせる。モジュール管理基盤C141がロード処理を開始すると、まず初めに、フォルダ走査部10はmodulesフォルダにあるバンドルe003をロードする。
modulesフォルダでは、シンボリックネームの変更を行なわないので、衝突検知部15がロード済みバンドルとの衝突がないことを確認し、情報格納部13にバンドルe003の情報を格納してバンドル情報テーブル50に追加後、ロード処理を完了する。依存解決処理部12では、バンドルe003が被参照のみであることを確認する。
これでmodulesフォルダのバンドルのロードが全て完了する。フォルダ走査部10の処理は、individualsフォルダ以下にあるモジュール群のロード処理に移る。
individuals/Eのロード処理では、まず、定義変更部14は、バンドルe001のシンボリックネームをEe001に変更し、衝突検知部15がバンドルの定義情報の衝突はないことを確認し、ロードは問題なく完了する。
バンドルe002のロードでは、定義変更部14がバンドルe002のシンボリックネームをEsnameに変更し、衝突検知部15が衝突のないことを確認後、情報格納部13にバンドル情報を格納する。ここで、依存解決処理部12は、バンドルe002を参照するバンドルe001のバンドル情報テーブル50の参照情報を更新して、変更後のシンボリックネームを参照するようにする。ただし、バンドルe002が参照していたmodulesフォルダにあるバンドルe003のメモリ上の参照情報は、バンドルe003が被参照のみであることから変更しない。
これにより、individualsフォルダ以下にあるサブフォルダ内のバンドルはmodulesフォルダにある共通機能を持つバンドルe003を参照することができる。
(実施例4)
実施例4は、サブフォルダ内の全バンドルのシンボリックネームを変更する代わりに、individualsフォルダ以下のサブフォルダごとに空のバンドルを用意し、そのフォルダ内のバンドルを空のバンドル内部に埋め込んで新たなバンドルを作成して、定義情報の衝突を回避する例である。
実施例4では、サブフォルダ内の各バンドルを一度独立したモジュール管理基盤でロードし、バンドル間の依存関係を解決した後に、それらを空のバンドルにバンドル定義情報を持たないモジュールとして埋め込む。
空のバンドルの定義情報には、サブフォルダ名のシンボリックネームを付ける。また、依存情報には、そのフォルダ内のバンドルの外部(サブフォルダ外)への依存だけを抽出して書く。これによって、individualsフォルダのサブフォルダごとに独立したバンドルを作成し、モジュール管理基盤上で同時にロードしたときに起こるバンドルの定義情報の衝突を回避する。
以下に具体例を用いて説明する。
実施例4のフォルダ構成図を図15に、全体構成図を図16に示す。図16の上段は、シンボリックネームを変更しない一般例であり、下段はシンボリックネームを変更する本発明に係る実施例である。なお、図16において、モジュール群J162を2つに分けて描いているのは、それらのバンドルが存在するフォルダの違い、またはシンボリックネームの変更の有無を区別するためである。
実施例4では、モジュール管理基盤J(図示しない)で動作しているモジュール群J162およびモジュール管理基盤K(図示しない)で動作しているモジュール群K163を、モジュール管理基盤C161で動作させる。
(構成)
モジュール群J162は、バンドルj001、バンドルj002、バンドルj003からなる。バンドルj001は、バンドルj002のパッケージpに依存し、バンドルj002は、バンドルj003のパッケージppに依存しているものとする。またバンドルj002は、シンボリックネームsname、パッケージpを有し、バンドルj003は、シンボリックネームsname2、パッケージppを有する。バンドルj003は一般的な機能を提供するものとする。
モジュール群K163は、バンドルk001、バンドルk002からなり、バンドルk001はバンドルk002のパッケージpに依存している。バンドルk001はシンボリックネームk001を有し、バンドルk002はシンボリックネームsname、パッケージpを有する。
バンドルj002及びバンドルk002は、バンドルx002を継承して作成されており、共通のパッケージpのほか独自に開発された機能を含む。
実施例4では、空バンドルz170を用意する。空バンドルz170は、バンドル定義情報とモジュールの格納部分を持つが、いずれも空であるとする。
(動作)
図16の下段の図を用いて実施例4に係るモジュール管理装置の動作を説明する。
まず、モジュール管理基盤C161にモジュール群J162、モジュール群K163を移行させる。ただし、バンドルj003は一般的な機能を提供するため、共通フォルダであるmodulesフォルダに配置するものとする。
実施例4では、モジュール管理基盤C161上でロード処理を行なう際に、定義変更部14によってindividualsフォルダ以下のサブフォルダをそれぞれ一度独立したモジュール管理基盤C161で読み込みを行なう。その後、バンドル情報の解析を行って、バンドルの再構築処理を行なう。
まず、individuals/Jフォルダにあるモジュール群J162のロード処理では、バンドルj001、バンドルj002がロードされ、バンドルの定義情報に従ってバンドルj001からバンドルj002への依存関係が設定される。バンドルj002からバンドルj003への依存については、バンドルj003はindividuals/Jフォルダではなく、modulesフォルダにあることから、ここではバンドルj003へ依存している事実だけを確認するものとする。
このとき、空バンドルz170を用意する。空バンドルz170は、バンドル定義情報とモジュール格納部分を持つが、それらは現時点では空であるとする。
ここで、前のステップで独立したモジュール管理基盤C161で読み込んだ結果として、バンドルj001、バンドルj002およびそれらの依存関係が判明している。そこで、バンドルj001、バンドルj002からバンドル定義情報を取り出して、モジュール部分だけを空バンドルz170のモジュール格納部分に配置する。これにより、バンドルj001からバンドルj002への依存関係は、同一のバンドル内に格納することによってロード時に解決されることになる。また、バンドルj003への依存については、空バンドルz170のバンドル定義部分に依存情報の記述を移す。
このようにして、空バンドルz170でモジュール群J162を包むことによって、バンドルzj171が完成する。ただしバンドルzj171のシンボリックネームはフォルダ名Jとする。
完成したバンドルzj171をモジュール管理基盤C161に移し、衝突検知部15でバンドル情報テーブル50を参照して衝突が発生しないことを確認し、ロード処理部11でロード処理を行なう。
バンドルzj171は、バンドルj003のみに依存するバンドルであるので、ロードしたバンドル情報を情報格納部13に格納した後、バンドル情報テーブル50に追加する。
その後、依存解決処理部12で先にロードされているバンドルj003への依存関係を構築し、ロード処理を完了する。ロード処理では、新しく構成したバンドルzj171がクラスローダによって読み込まれ、その中身であるモジュールj001、モジュールj002のパッケージがロードされる。
モジュールj001、j002を単独でロードした場合は、それぞれに一つのクラスローダが使われて、モジュール管理基盤C161を通して参照が行なわれる。それに対して、本実施例のように一つのバンドルに統合した構成では、一つのクラスローダ内でパッケージの参照が行なわれる。
モジュール群K163も同様に空バンドルz170を使ってシンボリックネームKをもつバンドルzk172を作成し、モジュール管理基盤C161でロードを行なう。
バンドルzj171、バンドルzk172では、シンボリックネームの衝突は発生せず、誤った依存関係も構築されない。そのため、本発明によりindividualsフォルダ以下のモジュール群の独立性を保ちながらロード処理を完了する。
以上の実施例から、本発明の実施形態に係るモジュール管理装置、モジュール管理システム、モジュール管理方法の特徴をまとめると以下のようになる。
モジュール管理基盤においてバンドルの定義情報の衝突を、バンドル本体の修正なく解決できる。
バンドルの定義情報の衝突によって発生していた意図に反したバンドル間の依存関係構築を回避できる。
バンドル間の定義情報の衝突を避けて、複雑な依存関係をもったモジュール群を複数並行稼働することができる。
バンドルの配置場所によって、他のバンドルと共有するバンドル、個別のバンドルに分けることができる。
このように、本発明の実施形態によれば、アプリケーションの更新時におけるバンドルの定義情報の衝突による想定外の依存関係の構成を防ぎ、モジュール群ごとに更新の影響を局所化して、運用、管理、拡張面の容易性を実現することが可能となる。
なお、本発明の実施形態に係る管理方法は、その方法をコンピュータに実行させるプログラム、そのプログラムを用いたソフトウェア・システム、アプリケーションサーバ、アプリケーション等に適用することが可能である。
本発明のモジュール管理装置、モジュール管理システム、モジュール管理方法及びその管理方法を用いたプログラムは、モジュール管理基盤を採用しているアプリケーションサーバの開発および、その上で動作する大規模なアプリケーションの開発に適用できる。例えば、他のモジュール管理基盤上で正常に動作しているモジュール群を移植する場合や、既に構築済みの環境で新規にモジュールを追加する場合に、移行の容易性を実現する。具体的には、モジュール自体の修正を行なわずに、バンドルのシンボリックネームの衝突を回避し、バンドルの共有と個別化を可能とすることによって、移行の容易性を実現することができる。
以上、本発明を上記実施形態及び実施例に即して説明したが、本発明は、上記実施形態の構成や動作にのみ限定されるものではなく、本発明の範囲内で当業者であればなしうることが可能な各種変形、修正を含むことはもちろんである。
1 衝突回避装置
10 フォルダ走査部
11 ロード処理部
12 依存解決処理部
13 情報格納部
14 定義変更部
15 衝突検知部
21 モジュール管理基盤
22 モジュール群A
23 モジュール群B
24 バンドルa
25 バンドルb
26、29 バンドルc
27 バンドルd
28 バンドルe
50 バンドル情報テーブル
60 シンボリックネーム変更管理テーブル
71 モジュール管理基盤A
72 モジュール群A
73 モジュール管理基盤B
74 モジュール群B
101、111、141、161 モジュール管理基盤C
113 モジュール群D
142 モジュール群E
162 モジュール群J
163 モジュール群K
170 空バンドルz
171 バンドルzj
172 バンドルzk

Claims (9)

  1. オブジェクト指向言語で記述されたプログラムからなるモジュール及び前記モジュールの属性を含む定義情報を有するバンドルを配置したフォルダを走査するフォルダ走査部と、
    前記バンドルの読み込みを行うロード処理部と、
    前記バンドルの参照関係を整合させる依存解決処理部と、
    前記バンドルの情報を格納する情報格納部と、
    前記バンドルの前記定義情報を変更する定義変更部と、
    前記定義変更部で変更された前記定義情報によって衝突が起こるか否かを検知する衝突検知部と、を備え、
    前記バンドルと、複数の前記バンドルからなるモジュール群と、を一元管理するモジュール管理基盤の起動時において前記バンドルを前記フォルダからロードする際に、
    異なる前記バンドル間で前記定義情報が衝突する場合、
    前記定義変更部は、前記定義情報を動的に変更し、
    前記依存解決処理部は、前記バンドルの参照関係を整合し、
    前記衝突検知部は、前記ロード処理部によってロード済みの前記バンドルの第1の定義情報と、前記フォルダ走査部によって検出された未処理の前記バンドルの第2の定義情報とが衝突するか否かを検証し、
    前記第1の定義情報と前記第2の定義情報とが衝突する場合、
    前記定義変更部は、前記第2の定義情報を新たな第3の定義情報に変更し、
    前記依存解決処理部は、前記第1の定義情報と前記第3の定義情報との参照関係を整合し、
    前記情報格納部は、前記第3の定義情報に関する情報及び参照関係を更新することを特徴とするモジュール管理装置。
  2. 前記定義情報は、前記バンドルのシンボリックネームであることを特徴とする請求項1に記載のモジュール管理装置。
  3. 前記定義変更部は、前記シンボリックネームを変更する際に、前記バンドルが格納されている前記フォルダの名前に応じた記号を前記シンボリックネームに付与することを特徴とする請求項2に記載のモジュール管理装置。
  4. さらに、異なる前記バンドル間におけるお互いの参照関係と前記シンボリックネームとを含む第1のテーブルと、
    前記バンドルのファイルパスに対応させた前記定義情報の変更履歴を含む第2のテーブルと、を備え、
    前記第1及び第2のテーブル上の前記定義情報を変更することを特徴とする請求項3に記載のモジュール管理装置。
  5. 前記バンドルを外部のアプリケーションによって共有化できるように格納する共通フォルダと、前記バンドルを外部のアプリケーションによって共有化されないように格納する個別フォルダとから、前記バンドルをロードする際に、
    前記共通フォルダからは前記バンドルを公開できる状態でロードし、前記個別フォルダからは前記バンドルを公開されない状態でロードすることを特徴とする請求項1乃至4のいずれか一項に記載のモジュール管理装置。
  6. 同一の前記モジュール群に含まれる複数の前記バンドルを、前記共通フォルダと前記個別フォルダに振り分けてロードすることを特徴とする請求項5に記載のモジュール管理装置。
  7. 定義情報及びモジュール格納部分が空白である空バンドルに、複数の前記バンドルに含まれるモジュールを前記バンドルの参照関係を維持したままで配置し、前記空バンドルに対して衝突が起こらない定義情報を与え、前記定義情報の参照関係を整合することを特徴とする請求項1乃至6のいずれか一項に記載のモジュール管理装置。
  8. 前記モジュール管理装置を備えることを特徴とする請求項1乃至7のいずれか一項に記載のモジュール管理システム。
  9. オブジェクト指向言語で記述されたプログラムからなるモジュール及び前記モジュールの属性を含む定義情報を有するバンドルを配置したフォルダを走査し、
    前記バンドルの読み込みを行い、
    前記バンドルの参照関係を整合させ、
    前記バンドルの情報を格納し、
    前記バンドルの前記定義情報を変更し、
    変更された前記定義情報によって衝突が起こるか否かを検知し、
    前記バンドルと、複数の前記バンドルからなるモジュール群と、を一元管理するモジュール管理基盤の起動時において前記バンドルを前記フォルダからロードする際に、
    異なる前記バンドル間で前記定義情報が衝突する場合、
    前記定義情報を動的に変更し、前記バンドルの参照関係を整合し、
    ロード済みの前記バンドルの第1の定義情報と、検出された未処理の前記バンドルの第2の定義情報とが衝突するか否かを検証し、
    前記第1の定義情報と前記第2の定義情報とが衝突する場合、
    前記第2の定義情報を新たな第3の定義情報に変更し、
    前記第1の定義情報と前記第3の定義情報との参照関係を整合し、
    前記第3の定義情報に関する情報及び参照関係を更新することを特徴とするモジュール管理方法。
JP2012206416A 2012-09-20 2012-09-20 モジュール管理装置、モジュール管理システム及びモジュール管理方法 Active JP6102136B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012206416A JP6102136B2 (ja) 2012-09-20 2012-09-20 モジュール管理装置、モジュール管理システム及びモジュール管理方法
US14/028,662 US9274759B2 (en) 2012-09-20 2013-09-17 Module management apparatus, module management system and module management method
CN201310430522.0A CN103677894B (zh) 2012-09-20 2013-09-18 模块管理设备、模块管理***和模块管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012206416A JP6102136B2 (ja) 2012-09-20 2012-09-20 モジュール管理装置、モジュール管理システム及びモジュール管理方法

Publications (2)

Publication Number Publication Date
JP2014063237A JP2014063237A (ja) 2014-04-10
JP6102136B2 true JP6102136B2 (ja) 2017-03-29

Family

ID=50275863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012206416A Active JP6102136B2 (ja) 2012-09-20 2012-09-20 モジュール管理装置、モジュール管理システム及びモジュール管理方法

Country Status (3)

Country Link
US (1) US9274759B2 (ja)
JP (1) JP6102136B2 (ja)
CN (1) CN103677894B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223652B2 (en) * 2014-04-08 2019-03-05 Capital One Services, Llc Systems and methods for an attribute generator tool workflow
US9875119B2 (en) * 2014-12-04 2018-01-23 Business Objects Software Ltd. Extensibility framework
WO2017203524A1 (en) * 2016-05-24 2017-11-30 Twine Solutions Ltd. System, machine and method for treating threads or parts thereof
JP7510795B2 (ja) 2020-06-22 2024-07-04 富士通株式会社 ファイル出力プログラム、ファイル出力方法、及びファイル出力装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2811990B2 (ja) * 1991-04-19 1998-10-15 三菱電機株式会社 プログラム処理装置及びプログラム処理方法
US5519862A (en) * 1993-02-26 1996-05-21 Taligent, Inc. Concurrent processing apparatus with incremental command objects
JPH076026A (ja) * 1993-05-28 1995-01-10 Xerox Corp 構成管理及び構成要素の互換性保証方法、ならびに常駐ソフトウェアと移行ソフトウェアの非互換性の排除方法
US5692184A (en) * 1995-05-09 1997-11-25 Intergraph Corporation Object relationship management system
US6564369B1 (en) * 1998-08-20 2003-05-13 Pearson Technical Software, Inc. Conflict checking using configuration images
FI991167A (fi) * 1999-05-24 2000-11-25 Nokia Mobile Phones Ltd Menetelmä käyttöliittymäohjelmiston lataamiseksi
US7882501B1 (en) * 1999-08-13 2011-02-01 Oracle America, Inc. System and method for enabling dynamic modifed class reloading in an application server environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6442748B1 (en) * 1999-08-31 2002-08-27 Accenture Llp System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
US6385722B1 (en) * 2000-01-27 2002-05-07 Sun Microsystems, Inc. Method, system, and article of manufacture for limiting access to program files in a shared library file
JP3555858B2 (ja) * 2000-03-23 2004-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体
US7676788B1 (en) * 2003-03-25 2010-03-09 Electric Cloud, Inc. Architecture and method for executing program builds
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US20060161989A1 (en) * 2004-12-13 2006-07-20 Eran Reshef System and method for deterring rogue users from attacking protected legitimate users
US20060161898A1 (en) * 2005-01-18 2006-07-20 Brian Bauman Method and system for project library dependency management
US7895566B2 (en) * 2005-03-10 2011-02-22 Research In Motion Limited System and method for building a deployable component based application
US20060248121A1 (en) * 2005-04-15 2006-11-02 Michael Cacenco System and method for supporting packaging, publishing and republishing of wireless component applications
US7818733B2 (en) * 2005-09-27 2010-10-19 International Business Machines Corporation Improving bundle control in computing environment
US8065660B1 (en) * 2006-05-12 2011-11-22 Cisco Technology, Inc. Method and system for run-time customization of network management applications
US20080209393A1 (en) * 2007-02-28 2008-08-28 Tomas Evensen System and method to automatically detect incompatible licensing models
US7890945B2 (en) * 2007-05-31 2011-02-15 International Business Machines Corporation Method for versioning classes loaded in an OSGi-enabled J2EE environment
US8296733B2 (en) * 2007-09-20 2012-10-23 Siemens Aktiengesellschaft Systems, devices, and/or methods for managing program logic units
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US8230389B2 (en) * 2008-04-30 2012-07-24 International Business Machines Corporation OSGi dynamic bundle generation at runtime
JP5396821B2 (ja) * 2008-11-05 2014-01-22 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US8769482B2 (en) * 2008-12-16 2014-07-01 International Business Machines Corporation Method and system for building an application
US8015450B1 (en) * 2009-03-26 2011-09-06 Symantec Corporation Systems and methods for detecting and automatically installing missing software components
US8863074B2 (en) * 2010-01-27 2014-10-14 Oracle International Corporation Software modeling framework
CN102364922A (zh) * 2010-05-21 2012-02-29 上海繁云信息科技有限公司 一种解决多网互联时ip冲突的方法
US8560895B2 (en) * 2010-05-26 2013-10-15 Tibco Software Inc. Distillation and reconstruction of provisioning components
JP2012093979A (ja) 2010-10-27 2012-05-17 Hitachi Solutions Ltd OSGiバンドル及びデプロイメントパッケージ自動作成システム、自動作成方法及び自動作成ツール
US8813031B2 (en) * 2012-03-02 2014-08-19 Oracle International Corporation System and method for automatically resolving dependencies of Java Archive files for use with Maven
US8739124B2 (en) * 2012-06-27 2014-05-27 Sap Ag Configuring integration capabilities for system integration

Also Published As

Publication number Publication date
CN103677894A (zh) 2014-03-26
CN103677894B (zh) 2018-06-05
JP2014063237A (ja) 2014-04-10
US20140082589A1 (en) 2014-03-20
US9274759B2 (en) 2016-03-01

Similar Documents

Publication Publication Date Title
CN110019215B (zh) 多重租赁数据库***中的键模式管理
CN110147369B (zh) 多重租赁数据库***中的数据分离和写入重新定向
CN106775723B (zh) 基于Android平台的***固件定制的方法和Android设备
TWI566180B (zh) 一種動態創建可附加和可拆除二進位檔案的系統和方法
US8516442B2 (en) Graphical user interface metadata evolution tool
US10684846B2 (en) Using semantic annotations to control compatibility behaviors
CN101470621A (zh) 虚拟机配置***
RU2571592C2 (ru) Способ и система управления статическими структурами данных унаследованного программного обеспечения в средах динамических загрузчиков классов
CN101027639A (zh) 用于在软件应用程序储存库内提取和创建应用程序元信息的***和方法
JP2019040626A (ja) オブジェクト指向スクリプトツールをサポートするシステムおよび方法
JP6102136B2 (ja) モジュール管理装置、モジュール管理システム及びモジュール管理方法
US10303449B2 (en) Compiling non-native constants
US10649744B1 (en) Systems and methods for handling renaming of programming constructs in programming environments
EP4348417A1 (en) Deploying a cloud service based on component dependencies
CN113515303B (zh) 一种项目转型方法、装置和设备
US20170003958A1 (en) Non-transitory computer-readable recording medium, information processing device, and information processing method
CN111813836A (zh) 一种提高Ethereum区块链***扩展性的方法
US20150269248A1 (en) Importing metadata into metadata builder
WO2014064545A1 (en) Maintaining integrity of output of code generators
US20100251212A1 (en) Version Type Traversal
US10768912B1 (en) Platform class creation
US20240231664A9 (en) Refresh of stale reference to physical file locations
US20240134555A1 (en) Refresh of stale reference to physical file locations
US8453108B1 (en) Static, configurable kernel interface
CN117851515A (zh) 一种静态、动态分析相结合的智能合约状态提取方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160829

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161216

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R150 Certificate of patent or registration of utility model

Ref document number: 6102136

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150