JP2010250378A - ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム - Google Patents

ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム Download PDF

Info

Publication number
JP2010250378A
JP2010250378A JP2009096290A JP2009096290A JP2010250378A JP 2010250378 A JP2010250378 A JP 2010250378A JP 2009096290 A JP2009096290 A JP 2009096290A JP 2009096290 A JP2009096290 A JP 2009096290A JP 2010250378 A JP2010250378 A JP 2010250378A
Authority
JP
Japan
Prior art keywords
mbean
unit
annotation information
annotation
class
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.)
Granted
Application number
JP2009096290A
Other languages
English (en)
Other versions
JP5396979B2 (ja
Inventor
Kodai Okada
好大 岡田
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 JP2009096290A priority Critical patent/JP5396979B2/ja
Priority to US12/724,562 priority patent/US8621429B2/en
Publication of JP2010250378A publication Critical patent/JP2010250378A/ja
Application granted granted Critical
Publication of JP5396979B2 publication Critical patent/JP5396979B2/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/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 開発支援装置に、MBeanなどの単位オブジェクトを管理するオブジェクト管理機能を組み込んで、注釈情報をMBean等に付与可能とし、これを解析して拡張機能オブジェクト、MBeanInfo等の生成を可能とする。
【解決手段】 開発支援装置に、所定の処理を実行する単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段と、クラスを読み込んで単位オブジェクトを生成する手段と、クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段とを有するオブジェクト管理手段と、クラスに含まれる注釈情報を解析する注釈解析手段とを備え、オブジェクト生成手段が、拡張機能を実行するための注釈情報が存在する場合、注釈情報の解析結果にもとづき拡張機能オブジェクトを生成し、単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、拡張機能実行手段が拡張機能オブジェクトを実行する。
【選択図】 図19

Description

本発明は、Java(登録商標)を使用したアプリケーションやシステムデバイスの監視・管理のための標準仕様であるJMX(Java(R) Management Extensions)等の機能拡張を行うソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムに関する。
近年、JMXというJava(R)アプリケーションの実装及び運用管理に対する汎用的なフレームワークが登場したことにより、様々なJava(R)アプリケーションを汎用的なAPI(Application Programming Interface)で監視・管理することができるようになった。
すなわち、この仕様により、これまでJava(R)アプリケーションが独自に運用管理のために提供していたAPIや機能を使用せずに、どのようなJava(R)アプリケーションからでも共通した手法で監視・管理対象にアクセスすることが可能となっている。
しかしながら、これらの汎用的なAPIの仕様にはまだ基本的なものが多く、共通化されている部分は管理情報へのアクセス、オペレーションの実行、イベントの通知といった基本的な運用処理だけである。
一方、企業向けの大規模なサーバアプリケーションを管理するためのシステム開発にJMXを用いる場合、管理対象を効率よく、かつきめ細やかに管理可能とするためには、JMXをそのまま使用するだけでは十分ではなく、JMXに様々な追加実装を行うためのコードを、MBean(Managed Bean)に対して記述する必要がある。
例えば、アプリケーションサーバやプロセス監視、コンピュータ監視等を行うサーバアプリケーションにJMXを適用する場合、監視・管理対象となるJava(R)オブジェクトであるMBeanの初期化処理や状態監視、更新された情報を他のMBeanと同期化するための機能などについては、自前で用意しなければならない。
また、JMX仕様でのMBeanには幾つかのタイプが存在するが、MBeanによっては、自身が管理する情報のメタデータ(項目名など)を保有させ、これを所定のアプリケーションから参照可能とするためのMBeanInfoと呼ばれるオブジェクトの定義を開発者が全て自作する必要があり、この定義は多い時で数十行〜数百行にも及ぶ。
また、このような追加実装は、各々のMBeanで共通している部分も多く、MBeanの開発者が、それぞれ独自に同様のコードを記述することは望ましくない。さらに、JMXの仕様化はごく最近のことであり、APIを利用して実装を行える開発者はまだ多くはない。
これらのことから、開発者は本質的な運用管理ロジックの実装に注力することができず、規模が大きくなればなるほど開発効率が上がりにくくなるという問題があった。
これは、JMXで高度な運用管理を実現する場合に必ず直面する問題であり、JMXを適用する範囲が大きくなればなるほど、その実装量も多くなり、結果的に作業量、レベル共にJMX導入以前と変わらない場合がある。これでは、JMXを適用することによる優位性が薄れてしまうことになる。
このような状況において、現在、Java(R)に対してEoD(Ease of Development)という考え方が広まりつつある。EoDとは、Java(R)開発を誰もが容易に行えるようにするというJava(R)の仕様方針である。特に、EJB(Enterprise Java(R) Beans)やServlet(サーブレット)のようなビジネスロジックを組み込むアプリケーションの実装部分については、注釈(アノテーション)情報をフル活用して開発者の作業を可能な限り簡易化し、軽量化するための仕様が提供され始めている。
例えば、EJBやServletによれば、JNDI(Java(R) Naming and Directory Interface)名前サービスからの必要なオブジェクトの取得、トランザクション制御、データベースに対するリレーション定義とJava(R)オブジェクトとの関連付けを行うなどの作業を軽量化することが可能となっている。
これにより、開発者は今までよりも少ないコード量でこれまでと同様の機能を実装することができるようになっている。しかし、この注釈情報を活用する仕組みはアプリケーションの監視・管理向けにはまだ不十分であり、運用管理アプリケーションなどを開発する場合にこれらの恩恵を受けることは少ない。また、幾つかのオープンソースではJMXの開発を効率化するためのツールやAPIが提供されてはいるが、十分には普及していない状況である。
JMXによるプログラムは、全ての業務アプリケーションの初期化等のライフサイクル処理と関係を持ち、それらはアプリケーション実行基盤の基礎として動作するため、アプリケーション開発者ができるだけJMX層(下位層)におけるオブジェクトの振る舞いを意識せずに運用管理機能を実装できることが望ましい。
ここで、注釈情報を活用する仕組みに関連する技術としては、例えば特許文献1に記載のデバッグ支援方法や、特許文献2に記載の言語解釈表示方法を挙げることができる。
特許文献1に記載のデバッグ支援方法によれば、ソースコード中のメソッド定義部に埋め込まれた注釈情報を解析装置が抽出し、その情報をデバッガ上で評価可能な形式に変換する構成となっている。これによって、特定の条件式を注釈情報として定義することで、プログラムにおける異常発生時のデバッグ作業を効率化することが可能となっている。
また、特許文献2に記載の言語解釈表示方法によれば、HTMLに埋め込まれた注釈情報を解析装置が抽出し、その情報に基づき画面のカスタマイズを表示装置が行う構成となっている。これによって、下位互換性を保ちつつ、特定の注釈情報が解析可能な表示装置では、注釈情報に基づく表示のカスタマイズを行うことが可能とされている。
特開2008−210059号公報 特開平09−222974号公報
しかしながら、特許文献1に記載のデバッグ支援方法によれば、メソッド定義部に埋め込まれた注釈情報を抽出して解析することはできるが、解析結果にもとづき注釈情報をデバッガ上で評価可能な形式に変換するものであり、JMXを使用したプログラム量の削減や監視・管理のための処理の自動化等には適用することができず、JMX等に関連するコーディングの簡略化を図ることはできない。
また、特許文献2に記載の言語解釈表示方法によれば、HTMLに埋め込まれた注釈情報を抽出して解析することはできるが、解析した注釈情報にもとづき画面表示のカスタマイズを行うものであり、同様に、JMXを使用したプログラム量の削減や監視・管理のための処理の自動化等には適用することができず、JMX等に関連するコーディングの簡略化を図ることができるものではない。
本発明は、上記の事情にかんがみなされたものであり、ソフトウェア開発支援装置に、監視・管理に関連するMBeanなどの単位オブジェクトに対するコンテナ機能を組み込んで、専用の注釈情報をMBean等に付与可能にし、これを解析することで、拡張機能オブジェクトやMBeanInfo等を生成し、これによって、JMX等に関連するコーディングの簡略化を図るとともに、JMX仕様よりも高度できめ細やかなカスタマイズを施した処理を行わせることが可能なソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムの提供を目的とする。
上記目的を達成するため、本発明のソフトウェア開発支援装置は、所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段と、クラスを読み込んで単位オブジェクトを生成するオブジェクト生成手段と、クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段とを有するオブジェクト管理手段と、クラスに含まれる注釈情報を解析する注釈解析手段とを備え、オブジェクト生成手段が、単位オブジェクトの生成にあたり、注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき拡張機能オブジェクトを生成し、単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、拡張機能実行手段が、拡張機能オブジェクトを実行する構成としてある。
また、本発明のソフトウェア開発支援システムは、所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段と、クラスを読み込んで単位オブジェクトを生成するオブジェクト生成手段と、クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段とを有するオブジェクト管理手段と、クラスに含まれる注釈情報を解析する注釈解析手段と、を備えたソフトウェア開発支援装置と、ソフトウェア開発支援システムに接続された端末とを有し、オブジェクト生成手段が、単位オブジェクトの生成にあたり、注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき拡張機能オブジェクトを生成し、端末における所定のアプリケーションにより、単位オブジェクトが呼び出されて実行されると、拡張機能実行手段が、拡張機能オブジェクトを実行する構成としてある。
また、本発明のソフトウェア開発支援装置の機能拡張方法は、所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶し、単位オブジェクトの生成にあたり、クラスを読み込んで、クラスに含まれる注釈情報を解析し、注釈情報の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき拡張機能オブジェクトを生成し、単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、拡張機能オブジェクトが実行される方法としてある。
また、本発明のソフトウェア開発支援装置の機能拡張プログラムは、ソフトウェア開発支援装置を、所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段、クラスを読み込んで単位オブジェクトを生成するオブジェクト生成手段、クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段、及び、クラスに含まれる注釈情報を解析する注釈解析手段として機能させ、オブジェクト生成手段に、単位オブジェクトの生成にあたり、注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき拡張機能オブジェクトを生成させ、単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、拡張機能実行手段に、拡張機能オブジェクトを実行させる構成としてある。
本発明によれば、ソフトウェア開発支援装置に、監視・管理に関連するMBeanなどの単位オブジェクトの機能を拡張する拡張機能オブジェクトやMBeanInfo等を生成することができ、より少ないコード量で、JMX仕様よりも高度できめ細やかなカスタマイズを施した処理を行わせることが可能となる。
本発明の第一実施形態のソフトウェア開発支援システムの構成を示すブロック図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるソフトウェア開発支援装置の構成を示すブロック図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるクラスを説明するための図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBeanのインスタンス化を示す図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBeanコンテナの構成を示すブロック図である。 本発明の第一実施形態のソフトウェア開発支援システムにおける注釈ファイルの例1を示す図である。 本発明の第一実施形態のソフトウェア開発支援システムにおける注釈ファイルの例2を示す図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBeanクラスのコード例を示す図である。 従来のMBeanクラスのコード例を示す図である。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBean生成の概略処理手順(前半)を示すフローチャートである。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBean生成の概略処理手順(後半)を示すフローチャートである。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBeanの生成処理手順を示すフローチャートである。 本発明の第一実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理手順を示すフローチャートである。 本発明の第一実施形態のソフトウェア開発支援システムにおける変更情報の同期化の機能拡張処理手順を示すフローチャートである。 本発明の第二実施形態のソフトウェア開発支援装置の構成を示すブロック図である。 本発明の第二実施形態のソフトウェア開発支援システムにおけるMBeanの生成処理手順を示すフローチャートである。 本発明の第二実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理手順を示すフローチャートである。 本発明の第三実施形態のソフトウェア開発支援システムの構成を示すブロック図である。 本発明の第三実施形態のソフトウェア開発支援システムにおけるコンテナの構成を示すブロック図である。
以下、本発明のソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムの好ましい実施形態について、図面を参照しつつ説明する。
なお、以下の実施形態に示す本発明のソフトウェア開発支援装置は、プログラムに制御されたコンピュータにより動作するようになっている。コンピュータのCPUは、プログラムにもとづいてコンピュータの各構成要素に指令を送り、ソフトウェア開発支援装置の動作に必要となる所定の処理、例えば、単位オブジェクトの生成処理、クラスに含まれる注釈情報の解析処理、注釈情報の解析結果にもとづき拡張機能オブジェクトを生成する処理、拡張機能オブジェクトの実行処理等を行わせる。このように、本発明のソフトウェア開発支援装置における各処理,動作は、プログラムとコンピュータとが協働した具体的手段により実現できるものである。
プログラムは予めROM,RAM等の記録媒体に格納され、コンピュータに実装された記録媒体から当該コンピュータにプログラムを読み込ませて実行されるが、例えば通信回線を介してコンピュータに読み込ませることもできる。
また、プログラムを格納する記録媒体は、例えば半導体メモリ,磁気ディスク,光ディスク、その他任意のコンピュータで読取り可能な任意の記録手段により構成できる。
[第一実施形態]
本発明の第一実施形態は、Java(R)を使用したアプリケーションやシステムデバイスの監視・管理のための標準仕様であるJMXの機能拡張を行うソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムに関するものである。
まず、本実施形態の構成について、図1〜図9を参照して説明する。図1は、本実施形態のソフトウェア開発支援システム(Java(R)運用管理システム)の構成を示すブロック図である。図2は、本実施形態のソフトウェア開発支援装置(Java(R)運用管理装置)の構成を示すブロック図である。図3は、Java(R)におけるクラスを説明するための図である。図4は、本実施形態におけるMBeanのインスタンス化を示す図である。図5は、本実施形態のMBeanコンテナの構成を示すブロック図である。図6、図7は、本実施形態における注釈ファイルの例を示す図である。図8は、本実施形態におけるMBeanクラスのコード例を示す図であり、図9は、従来のMBeanクラスのコード例を示す図である。
本実施形態のソフトウェア開発支援システムは、Java(R)運用管理システムとして使用されるものであり、図1に示すように、ソフトウェア開発支援装置(Java(R)運用管理装置)10aと管理者端末60を有している。また、ユーザ端末70における業務用アプリケーション71が、ソフトウェア開発支援装置10aにおけるEJBやServletにアクセスする構成となっている。
そして、ソフトウェア開発支援装置10aにおけるMBean50a(50a−1,50a−2,・・・)は、管理者端末60における運用管理アプリケーション61から呼び出され、EJBコンテナ81やWebコンテナ91から各種情報を入力する。これにより、EJBやServletを管理する構成となっている。
本実施形態では、このようなMBean50aを生成するにあたって、MBeanクラス40aにおける注釈情報を注釈解析手段30により解析し、MBean50aの拡張機能を自動生成して、MBeanコンテナ20aにより、MBean50aの呼び出し時に実行可能にする。
また、図2に示すように、MBeanコンテナ20aによって、MBean50aの生成時に、MBean50aに対応するMBeanInfo51a(51a−1,51a−2,・・・)を、注釈情報を用いて自動生成して、管理者端末60における運用管理アプリケーション61からその注釈情報を参照可能とし、MBean50aを容易に管理可能としている。
本実施形態のソフトウェア開発支援装置(Java(R)運用管理装置)10aは、アプリケーションサーバやプロセス監視、コンピュータ監視等を行うサーバアプリケーションを管理するための、サーバ側の情報処理装置により構成することができる。例えば、Java(R)ベースのWebサーバ、アプリケーションサーバ等により、本実施形態のソフトウェア開発支援装置10aを構成することができ、Java(R)仮想マシンとしての役割を果たす。
このソフトウェア開発支援装置10aには、JMXエージェント(Java(R) Management Extensions)11aが備えられている。
JMXエージェント11aは、MBean50aに対して総合的なサービスを提供し、ソフトウェア開発支援装置10a内で実行される管理エンティティであり、MBean50aと、業務アプリケーション71やこれにより呼び出されるEJB82、Servlet92等との間のパイプ役として機能する。
JMXエージェント11a内には、図2に示すように、MBeanサーバ12aと、一又は二以上のサービス13a(同図の例では、13a−1,・・・,13d−1)が備えられている。
MBeanサーバ12aは、MBean50aを管理するためのものであり、JMXエージェント11aのコアコンポーネントである。管理者端末60における運用管理アプリケーション61からMBean50aにアクセスできるようにするためのMBean50aのリポジトリとして機能する。
サービス13aは、所定の汎用機能を実行する手段であり、JMX仕様により、JMXエージェント11a内において、規定数設ける必要がある。
このサービス13aは、本実施形態においては、例えばMBean50aの生成時に同時に生成された他の専用MBean等を、MBeanサーバ12a内における所定の記憶手段に格納する処理を実行する。
MBean50aは、MBeanコンテナ20aによって、MBeanクラス40aにもとづいて生成されるMBeanインスタンスであり、JMX APIに準拠した管理対象の単位オブジェクトである。図1の例では、MBean50aは、EJBコンテナ81、Webコンテナ91からの情報を入力する構成としてある。この情報としては、例えば、業務用アプリケーション71からの要求にもとづく各種処理のログ情報、EJB82やServlet92等の現在のオブジェクト数やその呼び出し回数等を挙げることができる。
JMX仕様では、ソフトウェア開発支援装置10aの所定のMBean記憶手段にMBean50aが格納された時点で、JMXクライアントからの要求にもとづいて、そのMBean50aを実行することが可能となる。なお、このMBean記憶手段は、図示しておらず、MBeanコンテナ20a上にMBean50aを表現しているが、このMBean50aを格納するMBean記憶手段は、MBeanコンテナ20aの外部に構成しても内部に構成してもかまわない。
MBeanクラス40aは、MBean50aを生成するためのものであり、MBeanコンテナ20aは、MBeanクラス40aを読み込んで、対応する一又は二以上のMBean50aを生成する。
ここで、Java(R)における「クラス」とは、図3に示すように、一般的に次の2つのいずれかを意味している。
(1)人間が判読可能な形式で、Java(R)言語の仕様に従ってクラス定義が記述(コード化)されたテキスト形式のファイル(ファイル名が*.javaとなる)。
(2)上記のファイルを、「コンパイラ」というツールを使用してJava(R)仮想マシン上で実行可能なバイナリ形式に変換(翻訳)されたデータファイル(ファイル名が*.classとなる)。本ファイルは、Java(R)のクラスローダによってJava(R)プロセス内に取り込まれる。
クラスローダは、Java(R)の仕様で任意のクラスファイル内のデータをJava(R)プロセス内に取り込み、そのインスタンス化や初期化を行えるようにするための一連の機能を持つ。また、読み込んだクラスデータを全て記憶し、管理するための役割も持つ。本実施形態では、このクラスローダにおける記憶手段を、MBeanクラス記憶手段21aとしている。
また、「コンパイラ」による実行可能な形式への変換作業は、一般的に、「コンパイル」と呼ばれ、Java(R)においては、主に次の2種類のコンパイル方式がある。
(1)予め開発者がコンパイラツールを使用して変換する。
(2)サーバ(Java(R)仮想マシン)内で、変換前のテキストファイルを読み込んで動的にコンパイル処理を行い、実行可能な形式のファイルに変換する。
なお、実行可能な形式のファイルにおいても、注釈情報等はデータ内に組み込まれ、本実施形態における注釈解析手段30による解析が可能である。本実施形態では、(1)のコンパイル方法を用いることを想定しているが、これに限定されるものではない。
図4は、MBeanクラス40aが、MBeanコンテナ20aにより読み込まれてインスタンス化され、MBean50aが生成されるとともに、MBeanInfo51aが生成される様子を示している。同図に示されているように、MBeanクラス40aには、注釈情報が含まれており、MBeanコンテナ20aは、MBean50aを生成する際、注釈解析手段30によりMBeanクラス40aにおける注釈情報を解析させ、この注釈情報を含むMBeanInfo51aを生成する。
この注釈情報には、MBean50aの構成を示す情報、MBean50aの属性及び操作を示す情報等を含めることができる。MBean50aの属性を示す情報(属性情報)とは、getterメソッドやsetterメソッドによって更新可能な情報である。これらの情報はいずれもpublicメソッド情報である。
MBeanInfo51aは、MBean50aの生成にあたって、MBean50aとともにそれぞれに対応づけて同時に生成されるオブジェクトであり、管理対象であるMBean50aの構成、属性、操作等に関する情報を保有する。管理者端末60における運用管理アプリケーション61は、このMBeanInfo51aにアクセスして、その内容を参照することができる。
これによって、MBean50aを管理することができ、これを通じて、MBean50aの管理対象であるEJB82やServlet92を管理することが可能となっている。
MBeanコンテナ20aは、各種オブジェクトの生成、記憶、及びこれらのオブジェクトやその属性データ等に対する各種操作を行うオブジェクト管理手段である。
MBeanコンテナ20aは、MBeanクラス40aにもとづきMBean50a及びMBeanInfo51aを生成するとともに、MBean50aに対応する拡張機能オブジェクトを生成し、これを実行する。
MBeanコンテナ20aは、図5に示すように、MBeanクラス記憶手段21a、MBean生成手段22a、注釈情報記憶手段23a、拡張機能記憶手段24a、MBean拡張機能対応テーブル25a、及び拡張機能実行手段26aを備えている。
MBeanクラス記憶手段21aは、MBeanクラス40aを記憶する。このMBeanクラス記憶手段21aは、上述したように、クラスローダを用いることができる。
MBean生成手段22aは、MBeanクラス記憶手段21aからMBeanクラス40aを読み込んで、これに対応するMBean50aを生成する。
また、MBean生成手段22aは、注釈解析手段30により、MBeanクラス40aに含まれている注釈情報を解析し、この注釈情報を含むMBeanInfo51aを生成する。
このとき、注釈解析手段30は、MBeanコンテナ20aにおける注釈情報記憶手段23aを参照し、この注釈情報記憶手段23aに記憶されている注釈情報が、MBeanクラス40aに存在するか否かを判定する。
注釈情報記憶手段23aは、注釈情報を記憶する手段であり、例えば図6,7に示すような注釈情報を有する注釈ファイルを記憶している。
これらの図において、「@」に連続する文字列と括弧書き部分の文字列が注釈情報(同図の下線部)であり、その他の部分は、注釈解析により拡張機能オブジェクトの生成などのために利用されるコードである。この注釈情報には、MBean50aの構成を示す情報、MBean50aの属性及び操作を示す情報等を含めることができるが、これらの図の例では、「@StandardMBean」,「@Constructor」は、MBean50aの構成を示す情報であり、「@Attribute」,「@Monitor」,「@DependenceAttribute」は、MBean50aの属性を示す情報であり、「@Operation」は、MBean50aの操作を示す情報であり,「@Interceptors」,「@AroundInvoke」,「@Validate」は、MBean50aの属性及び操作を示す情報である。
そして、MBeanクラス40aにこのような注釈情報が含まれている場合、注釈解析手段30aは、その注釈情報をMBean生成手段22aに出力する。
MBean生成手段22aは、注釈解析手段30aから注釈情報を入力すると、この注釈情報に拡張機能の定義情報が含まれているかを確認する。図6の例では、「@Monitor」及び「@Interceptors」が、拡張機能の定義情報に相当する。
そして、拡張機能の定義情報が含まれている場合、この注釈情報にもとづき一又は二以上の拡張機能オブジェクトを生成して、これを拡張機能記憶手段24aに格納するとともに、MBean50aと拡張機能オブジェクトとの対応付け情報をMBean拡張機能対応テーブル25aに格納する。
拡張機能記憶手段24aは、MBean生成手段22aにより生成された拡張機能オブジェクトを記憶する。
MBean拡張機能対応テーブル25aは、MBean50aの識別情報と、これに対応する拡張機能オブジェクトの識別情報とを、対応づけて記憶する。
拡張機能実行手段26aは、MBean50aが運用管理アプリケーション61から呼び出されるのを監視する。
そして、MBean50aが運用管理アプリケーション61から呼び出されると、拡張機能実行手段26aは、当該MBean50aに対応する拡張機能オブジェクトを、MBean拡張機能対応テーブル25aを参照して特定し、特定した拡張機能オブジェクトを拡張機能記憶手段24aから取得して、これを実行する。
この実行タイミングとしては、MBean50aが呼び出されると直ちに行うことも、その後に所定のタイミングで実行させるようにすることもできる。
また、本実施形態では、上記の通り、拡張機能実行手段26aは、MBean拡張機能対応テーブル25aを参照することで、運用管理アプリケーション61から呼び出されたMBean50aに対応する拡張機能オブジェクトを特定する構成としているが、これに限定されるものではない。例えば、拡張機能記憶手段24aに、拡張機能オブジェクトを、対応するMBean50aの識別情報とともに記憶させることで、MBean拡張機能対応テーブル25aを省略することもできる。
注釈解析手段30は、MBean生成手段22aからの要求にもとづいて、MBean50aの生成にあたり、MBeanクラス40aに含まれている注釈情報を解析し、その解析結果をMBean生成手段22aに返却する。この解析結果には、MBeanクラス40aに注釈情報が含まれている場合には、その注釈情報が含められる。
そして、MBean生成手段22aは、MBean50aを生成するとともに、注釈情報を含むMBeanInfo51aを生成することができる。また、注釈情報に対応する拡張機能を実行する拡張機能オブジェクトを生成し、これを拡張機能記憶手段24aに記憶させることができる。
図8は、注釈情報を含めてコード化されたMBeanクラス40aのコード例を示している。従来は、図9の下線部分に示すように、拡張機能オブジェクトを生成するために、それ自体について独自にコーディングする必要があった。
これに対し、本実施形態によれば、これを省略してMBeanクラス40aに対応する注釈情報を含め、このような注釈情報を使用したMBeanクラス40aを用いてMBean50aを生成する。
これによって、MBeanコンテナ20aは、MBean50aの生成の際に、拡張機能オブジェクトも併せて自動生成することができる。図8の例では、拡張機能オブジェクトは、@Monitor(type=CounterMonitor.class, granularityPeriod=“10000”)に基づき生成されるモニター専用MBean(JMXモニターMBean)である。このモニター専用MBeanの生成については、後述する。
また、注釈情報を含むMBeanInfo51aもMBean50aと共に生成される。図8の例では、@StandardMBean、@Attribute、@Monitor、@Operationに関する注釈情報がMBeanクラス40aに含まれている。これらの注釈情報は注釈解析手段30により順に解析されて、抽出される。
この注釈情報には、上記の定義情報部分と、getSampleValue、setSampleValue、resetという3つのメソッド情報部分から構成されている。そして、これらの注釈情報を、運用管理アプリケーション61からMBean50aに対応する公開情報として参照可能にするため、MBeanInfo51aが生成される。
このように、本実施形態のソフトウェア開発支援装置10aによれば、より少ないコード量で、JMX仕様よりも高度できめ細やかなカスタマイズを施したMBean等を生成することが可能となっている。
次に、本実施形態のソフトウェア開発支援システムにおける処理手順について、図10及び図11を参照して説明する。これらは、本実施形態のソフトウェア開発支援システムにおけるMBean生成の概略処理手順を示すフローチャートである。
まず、MBean50aの生成処理手順について説明する。
MBeanコンテナ20aにおけるMBeanクラス記憶手段21a(クラスローダ)には、予め生成の対象となるMBean50aに対応するMBeanクラス40aを記憶させておく。
具体的には、図10に示すように、クラスローダにより、MBeanクラス40aのバイナリファイルを入力して、記憶させておくことができる。
次に、MBean生成手段22aは、このクラスローダからMBeanクラス40aを読み込む(ステップ10)。
そして、注釈解析手段30により、このMBeanクラス40aに含まれる注釈情報を解析する(ステップ11)。
次に、MBean生成手段22aは、注釈情報に拡張機能の定義情報が含まれている場合、この注釈情報にもとづいて、対応する拡張機能オブジェクト(追加のJava(R)インスタンス)を生成して、拡張機能記憶手段24aに格納するとともに、MBean50aと拡張機能オブジェクトとの対応付け情報をMBean拡張機能対応テーブル25aに記憶する(ステップ12)。
これをMBeanクラス40aに含まれる全ての注釈情報について行う。
さらに、MBean生成手段22aは、MBean50aを生成するとともに、MBean50aに対応するMBeanInfo51aを生成する。
このとき、MBean生成手段22aは、MBeanクラス40aに含まれている注釈情報を、MBeanInfo51aに保有させ、このMBeanInfo51aを完成させる(ステップ13)。
なお、ステップ12における拡張機能オブジェクトの生成と、ステップ13におけるMBean50a、MBeanInfo51bの生成の順番は、入れ替えてもかまわない。
次に、本実施形態のソフトウェア開発支援システムにおける処理手順について、図12〜図14を参照して、さらに詳細に説明する。これらは順に、本実施形態のソフトウェア開発支援システムにおけるMBeanの生成処理手順を示すフローチャート、MBeanの呼び出し処理手順を示すフローチャート、変更情報の同期化の機能拡張処理手順を示すフローチャートである。
本実施形態のソフトウェア開発支援システムにおける処理に先立ち、開発者は、予めJMX API(Java(R) Management Extensions Application Programming Interface)に従って、任意のMBeanクラスを作成する。
その際、拡張機能を開発者がコード化する代わりに、それぞれの機能に対応する任意の注釈情報を、MBeanクラス40a内に(メソッド、フィールド、コンストラクタ等において)コード化する。
図8には、このようにしてコード化されたMBeanクラスのコードの例が示されている。同図において、「@Attribute」のような「@」に連続する文字列は、注釈情報における注釈定義である。また、注釈定義に連続してコードされている「(description = “The sample value of this MBean.”)」のような括弧書き部分の文字列は、注釈情報の本文である。
本実施形態では、注釈定義、注釈情報本文を総称して注釈情報と呼んでいる。
そして、このようにして開発者により作成されたMBeanクラス40aが、MBean生成手段22aによりインスタンス化されてMBean50aが生成され、JMXエージェント11a内のMBeanサーバ12aにおけるMBean記憶手段(以下、単にMBean記憶手段と称する)に記憶される。そして、MBean記憶手段におけるMBean50aは、運用管理アプリケーション61からの要求にもとづいて、MBean実行手段27aにより実行される。なお、図1等において、MBean記憶手段は、省略している。
MBean50aの生成にあたり、MBean生成手段22aは、MBeanクラス記憶手段21aからMBeanクラス40aを読み込んで(ステップ30)、これに対応するMBean50aとMBeanInfo51aを生成する(ステップ31)。このとき、MBeanInfo51aにはまだ注釈情報が含まれていない。
次に、MBean生成手段22aは、注釈解析手段30によりMBeanクラス40aに注釈情報が含まれているか否かを判定する(ステップ32)。そして、MBeanクラス40aに注釈情報が含まれていない場合(ステップ32のNO)、規定の基本情報のみをMBeanInfo51aに追加した後、処理を終了する。
MBeanクラス40aに注釈情報が含まれている場合(ステップ32のYES)、注釈情報の解析処理を実行する(ステップ33〜ステップ37)。この注釈情報の解析処理は、メソッド数分繰り返し実行する。
このとき、MBean生成手段22aは、注釈情報を注釈解析手段30aにより解析し、注釈情報に、MBean50aの構成、属性、操作等に関する情報が含まれているか否かを判定する(ステップ34)。
そして、注釈情報に、MBean50aの構成、属性、操作等に関する情報が含まれていない場合(ステップ34のNO)、規定の基本情報のみをMBeanInfo51aに追加した後、処理を終了する。
一方、注釈情報に、これらの情報が含まれている場合(ステップ34のYES)、MBean生成手段22aは、注釈情報に拡張機能の定義情報が含まれていると、これに対応する一又は二以上の拡張機能オブジェクトを生成して、拡張機能記憶手段24aに記憶する(ステップ35)。
また、MBean生成手段22aは、注釈情報をMBeanInfo51aに追加する(ステップ36)。
ステップ34からのステップ36までの処理を、MBeanクラス40aの注釈情報における各メソッドについて行った後(ステップ37)、規定の基本情報のみをMBeanInfo51aに追加した後、処理を終了する。
また、ステップ34において、注釈情報に情報監視のための拡張機能の定義情報(図6の注釈ファイル102参照)が含まれている場合、MBean生成手段22aは、モニター専用MBean(JMXモニターMBean)を生成して、拡張機能記憶手段24aに記憶させる。
そして、対応するMBean50aが運用管理アプリケーション61から呼び出されると、拡張機能実行手段26aは、モニター専用MBeanを実行する。
次に、本実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理について、図13を参照して説明する。同図は、本実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理手順を示すフローチャートである。
管理者端末60の運用管理アプリケーション61から、MBean実行手段27aを介してMBean50aが呼び出されると、MBean実行手段27aは、MBean50aが呼び出されたことを示す情報を拡張機能実行手段26aに出力してこれを通知し、当該MBean50aを実行する。
このとき、MBean50aに対応する拡張機能として、MBean50aによる処理の前に行うための割り込み処理(インターセプター)が存在する場合(ステップ50のYES)、拡張機能実行手段26aは、MBean50aに対応する、当該割り込み処理を実行するための拡張機能オブジェクトを、MBean拡張機能対応テーブル25aを参照して特定する。そして、特定した拡張機能オブジェクトを拡張機能記憶手段24aから取得して、当該拡張機能オブジェクトを実行することにより、割り込み処理を実行する(ステップ51)。
MBean50aに対応する拡張機能として、割り込み処理が存在するか否かの判定は、MBean実行手段27aが、MBeanInfo51bを参照して、当該拡張機能を定義する注釈情報が存在するか否かを確認すること等により行うことができる。その他の拡張機能についても同様である。なお、このような判定は、拡張機能実行手段26aにより行うことも可能である。
次に、MBean実行手段27aは、MBean50aに対して与えられる引数の値(「setterメソッド」又は「操作メソッド」の引数に渡された値)が有効であるか否かを確認し(ステップ52)、値が無効であれば(ステップ52のNO)、JMX例外を発行して(運用管理アプリケーション61にJMX仕様で規定された適切な例外であるエラー情報等を返却して)処理を終了する(ステップ53)。
値が有効であれば(ステップ52のYES)、当該MBean50aに含まれる所定のメソッドが呼び出されて実行される(ステップ54)。
次に、MBean50aに対応する拡張機能として、同期化処理が存在する場合(ステップ55のYES)、拡張機能実行手段26aは、MBean50aに対応する、当該同期化処理を実行するための拡張機能オブジェクトを、MBean拡張機能対応テーブル25aを参照して特定する。そして、特定した拡張機能オブジェクトを拡張機能記憶手段24aから取得して、当該拡張機能オブジェクトを実行することにより、同期化処理を実行する(ステップ56)。
この同期化処理は、図14に示すように、同期化の対象の属性に対するSetterメソッドの呼び出しを、その属性数分繰り返すことによって行われる。これによって、依存関係の属性、操作に対する管理情報が、拡張機能実行手段26aにより更新される。図7の注釈ファイル105の例では、対象の属性である「SampleValue2」が、「sampleValue」で更新されて、同期化が図られる。
次に、MBean50aに対応する拡張機能として、MBean50aによる処理の後に行うための割り込み処理が存在する場合(ステップ57のYES)、拡張機能実行手段26aは、MBean50aに対応する、当該割り込み処理を実行するための拡張機能オブジェクトを、MBean拡張機能対応テーブル25aを参照して特定する。そして、特定した拡張機能オブジェクトを拡張機能記憶手段24aから取得して、当該拡張機能オブジェクトを実行することにより、割り込み処理を実行する(ステップ58)。
これにより、JMXクライアントである管理者端末60の運用管理アプリケーション61からMBean50aが呼び出され、MBean50aの管理対象の情報(EJBコンテナ80aやWebコンテナ90a)に対する更新や操作等の処理が実行される。
以上説明したように、本実施形態のソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムによれば、MBean50aに対し、JMX仕様よりも高度で一層きめ細やかなカスタマイズを施した処理を実行可能な拡張機能を付与することが可能となる。
その理由は、既存のJMX仕様を拡張する形でコンテナの概念をMBeanに適用することで、初期化処理やパラメータチェック、MBean間の整合性の確保といった監視・管理アプリケーションに特有の作業を、サーバ側で共通化して実行できるようになるためである。このことは、大規模アプリケーション等で統一化した運用制御を行う場合には特に適用効果が高い。
また、本実施形態によれば、開発者のコード作成量を大幅に減少することができる。
その理由は、これまで開発者自身で作成する必要があった管理情報の初期値定義やパラメータチェック処理、情報の同期化に対して、相当の処理を行う注釈情報を新たに定義し、それをMBeanコンテナ側で管理・制御することで、開発者は運用管理のための本質的なコードのみを記述すればよいからである。
さらに、本実施形態によれば、運用管理アプリケーション61aやMBean50aに対する評価作業を容易化することができる。
その理由は、これまでMBean50aを生成するコードをテストするためには、専用のMBeanサーバ12a上で動作させる必要があったが、注釈情報を用いることで、これまで開発者自身で作成していた管理情報の初期値定義や永続化処理、同期化等の特有のコードをMBeanクラス内の実装ロジックから取り除くことができ、単体テストやJUnit等のテストフレームワークからでも容易に評価が行えるようになるためである。また、MBeanメソッドの割り込み処理を行う注釈情報を用いることで、例えばログ出力や性能測定といった横断的で共通な処理を容易に実装、確認することができるためである。
[第二実施形態]
次に、本発明の第二実施形態について、図15を参照して説明する。同図は、本実施形態のソフトウェア開発支援装置の構成を示すブロック図である。
本実施形態は、JMX仕様におけるMBeanのタイプとしてModelMBean(Dyamic MBeanの一種)を使用している点で第一実施形態と異なる。その他の点については、第一実施形態と同様である。
ModelMBeanでは、既存の(JMXに準拠していない)Java(R)オブジェクト52b(52b−1,52b−2,・・)を、MBeanのようにモデル化して管理することができる。
すなわち、図15に示すように、既存のJava(R)オブジェクト52bは、MBean50bの一部に含められ、MBean50bに対応するMBeanInfo51b(51b−1,51b−2,・・)にディスクリプタ領域53b(53b−1,53b−2,・・)を保有させることが可能となっている。
このように、MBeanInfo51b内にディスクリプタ領域53bを設けることで、運用管理アプリケーション用の表示方式に関する情報(displayName、visibility)や、データの初期値に関する情報(default)、データの永続性に関する情報(persistPolicy)等の補足情報を、ディスクリプタ領域53bに保有させることができるようになっている。
そして、属性情報や操作情報といった管理情報に加えて、さらにこれらの補足情報を、MBeanInfo51の構成要素として使用することが可能となっている。
また、本実施形態では、第一実施形態における構成に加えて、これらの補足情報もMBeanクラス40bに注釈情報として保有され、MBean50bの生成時に、MBean生成手段22aが、この注釈情報をディスクリプタ領域に追加更新することで、MBeanInfo51bを作成する。
さらに、本実施形態では、補足情報を含むMBean50bについての管理情報を、情報格納装置13bに永続化して、当該インスタンスの状態を半永久的に保存し、MBeanInfo51bやMBean50bをいつでも復元することが可能となっている。
次に、本実施形態のソフトウェア開発支援システムにおけるMBeanの生成処理について、図16を参照して説明する。図16は、本実施形態のソフトウェア開発支援システムにおけるMBeanの生成処理手順を示すフローチャートである。
本実施形態では、運用管理対象のMBean50bを生成するために、既存のMBeanクラス40bを使用することができる。
JMX仕様には、この既存のMBeanクラスとして、RequiredModelMBeanという標準のModelMBeanクラスが用意されている。本実施形態では、このRequiredModelMBeanを利用するか、このサブクラスを作成して用いることが可能である。
その際、運用管理における拡張機能を開発者がコード化する代わりに、それぞれの機能に対応する注釈情報を、上記既存のMBeanクラス40bにおけるメソッドや、フィールド、コンストラクタに追加することで、第一実施形態と同様に、この既存のMBeanクラス40bにもとづきMBean50b及びMBeanInfo51bを生成することが可能となっている。
すなわち、本実施形態のソフトウェア開発支援システムにおけるMBean50bの生成処理手順は、MBeanクラス40bの読み込み処理から、注釈情報の存在確認処理まで(ステップ70〜ステップ72)と、注釈情報解析ループ(ステッ76〜ステップ80)については、第一実施形態のソフトウェア開発支援システムにおける処理(ステップ30〜ステップ32、ステップ33〜ステップ37)と同様である。
一方、本実施形態では、MBean生成手段22bは、例えば図7の注釈ファイル106,107の注釈情報において定義される、上述した補足情報を、MBeanInfo51bに保有させる注釈の詳細情報の初期値として、ディスクリプタ領域53b−1に格納する(ステップ73)。
また、本実施形態では、MBean50bについての管理情報の永続化が行われるため、永続化された管理情報が情報格納装置13bに存在している場合(ステップ74のYES)、MBean生成手段22bは、MBeanInfo51bの注釈情報を、この永続化された管理情報により更新する。このとき、ディスクリプタ領域53b−1に格納されている初期値は、その永続化された管理情報における補足情報により更新される(ステップ75)。
なお、本実施形態のMBean50bの生成処理におけるその他の注釈情報にもとづく処理、すなわち、JMXモニター機能による情報監視処理、割り込み処理(インターセプター)、setterメソッド又は操作メソッド実行時の引数の有効性チェック処理、および変更情報の同期化処理については、第一実施形態における処理と同様に行うことができる。
次に、本実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理について、図17を参照して説明する。図17は、本実施形態のソフトウェア開発支援システムにおけるMBeanの呼び出し処理手順を示すフローチャートである。
本実施形態のソフトウェア開発支援システムにおけるMBean50bの呼び出し処理手順については、ステップ95におけるMBean管理情報の永続化処理以外(ステップ90〜ステップ94、ステップ96〜ステップ99)は、第一実施形態のソフトウェア開発支援システムにおける処理(ステップ50〜ステップ54、ステップ56〜ステップ55)と同様である。
一方、本実施形態では、MBean50bについての管理情報等を永続化するため、setterメソッド又は操作メソッドなどの対象メソッドが実行されると、MBeanコンテナ20bにおける永続化手段27bが、MBeanInfo51bの管理情報を含む注釈情報を、情報格納装置13bに保存する(ステップ95)。例えば、図7の注釈ファイル105にもとづき同期化が行われた場合などに、更新されたMBeanInfo51bにおける注釈情報が、情報格納装置13bに保存される。
そして、この永続化された管理情報が存在する場合、上述したように、MBean50bの生成処理において、MBeanInfo51bは、この管理情報を用いて更新され、ディスクリプタ領域53b−1に格納されている補足情報も更新される。
以上説明したように、本実施形態のソフトウェア開発支援装置、ソフトウェア開発支援システム、ソフトウェア開発支援装置の機能拡張方法、及びソフトウェア開発支援装置の機能拡張プログラムによれば、既存のJava(R)オブジェクトを含むMBean50bを生成するにあたり、第一実施形態における場合と同様に、注釈情報を用いて拡張機能オブジェクトを生成することができ、注釈情報を備えたMBeanInfo51bを生成することもできる。
また、MBeanInfo51におけるディスクリプタ領域53b−1に、注釈情報における補足情報を保有させることができ、これらの注釈情報の永続化を行うこともできる。そして、この永続化した注釈情報を用いて、MBeanInfo51bの注釈情報を更新することができる。
[第三実施形態]
次に、本発明の第三実施形態について、図18、図19を参照して説明する。図18は、本実施形態のソフトウェア開発支援システムの構成を示すブロック図であり、図19は、同システムにおけるコンテナの構成を示すブロック図である。
本実施形態は、第一実施形態のJava(R)運用管理システムとして構成されたソフトウェア開発支援システムを、Java(R)以外のオブジェクト指向プログラミング言語によるプログラムの実行及び開発環境に適用したものである。すなわち、本実施形態は、用いられるオブジェクト指向プログラミング言語がJava(R)に限定されない点を除いては、第一実施形態と同様である。
本実施形態のソフトウェア開発支援システムは、図18に示すように、システム管理装置10と、管理者端末60とを有している。
このシステム管理装置10は、第一実施形態におけるJava(R)運用管理装置10aに相当し、コンテナ20、注釈解析手段30、単位オブジェクト50(50−1,50−2,・・・)を備えている。これらは、それぞれ第一実施形態におけるMBeanコンテナ20a、注釈解析手段30a、MBean50aに相当するものである。
コンテナ20は、各種オブジェクトの生成、記憶、及びこれらのオブジェクトやその属性データ等に対する各種操作を行うオブジェクト管理手段である。
コンテナ20は、単位オブジェクト50を生成するためのクラス40を保有しており、このクラス40を用いて、対応する単位オブジェクト50を生成する。また、この単位オブジェクト50の生成にあたって、注釈解析手段30により、クラス40に含まれている注釈情報を解析して、拡張機能オブジェクトを生成し、これを実行する。
コンテナ20は、図19に示すように、クラス40を記憶するクラス記憶手段21、単位オブジェクト50を生成するオブジェクト生成手段22、注釈解析手段30による解析に用いられる注釈情報を記憶する注釈情報記憶手段23、オブジェクト生成手段22により生成される拡張機能オブジェクトを記憶する拡張機能記憶手段24、単位オブジェクト50と拡張機能オブジェクトとの対応関係を記憶するオブジェクト拡張機能対応テーブル25、及び拡張機能オブジェクトを実行する拡張機能実行手段26を備えている。
また、単位オブジェクト50は、図19に示すように、注釈情報オブジェクト51を備えている。この注釈情報オブジェクト51は、第一実施形態におけるMBeanInfo51bに相当するものであり、オブジェクト生成手段22によって、単位オブジェクト50の生成と同時に生成される。
本実施形態における単位オブジェクト50の機能は、特に限定されるものではないが、例えば、所定の管理対象機能実行手段80,90における各種情報を更新したり、操作したり、あるいはこれらの情報を取得等することができる。図18の例では、管理対象機能実行手段80,90は、ユーザ端末70における業務アプリケーション71からの要求にもとづいて、管理対象機能オブジェクトを実行するものである。
すなわち、本実施形態では、システム管理装置10におけるオブジェクト生成手段22が、単位オブジェクト50の生成に際して、注釈解析手段30によりクラス40に含まれる注釈情報を解析し、この注釈情報に拡張機能を実行するための注釈情報が含まれている場合は、当該注釈情報に定義されている拡張機能オブジェクトを生成する。また、この注釈情報を含む注釈情報オブジェクト51を生成する。
この注釈情報オブジェクト51は、システム管理装置10に接続された管理者端末60における運用管理アプリケーション61により参照することができる。
そして、単位オブジェクト50が運用管理アプリケーション61から呼び出されて、単位オブジェクト実行手段27により実行されると、拡張機能実行手段24は、その単位オブジェクト50に対応する拡張機能オブジェクトを、オブジェクト拡張機能対応テーブル25を参照して特定し、特定した拡張機能オブジェクトを拡張機能記憶手段24から取得して実行する。
このような本実施形態によれば、第一実施形態と同様に、ソフトウェア開発支援装置によって、単位オブジェクトの機能を拡張する拡張機能オブジェクトや、注釈情報オブジェクトを生成することができ、より少ないコード量で、高度できめ細やかな機能を備えた単位オブジェクト及び拡張機能オブジェクト等を生成することが可能となる。
なお、本実施形態のソフトウェア開発支援システムにおいて、第二実施形態におけるJava(R)運用管理システムと同様に、注釈情報オブジェクトにディスクリプタ領域を設けるとともに、コンテナに永続化手段を備えて、補足情報をディスクリプタ領域に保有させ、管理情報の永続化を行うようにすることも可能である。
本発明は、以上の実施形態に限定されるものではなく、本発明の範囲内において、種々の変更実施が可能であることは言うまでもない。
例えば、上記各実施形態では、MBeanなどの単位オブジェクトへのアクセスを、管理者端末における運用管理アプリケーションから呼び出す構成としてあるが、これに限定されるものではなく、一般のユーザ端末におけるその他のアプリケーションから呼び出す構成とするなど適宜変更することが可能である。
本発明は、監視や管理を行うサーバアプリケーションに対して、JMX仕様よりも高度で一層きめ細やかなカスタマイズを施したい場合、特に、大規模アプリケーション等で統一化した運用制御を行う場合などに好適に利用することが可能である。例えばアプリケーションサーバやプロセス監視、コンピュータ管理のためのサーバアプリケーションを開発する製品プロジェクトに本発明を適用すれば、各開発者は、初期化処理やパラメータチェック、情報の同期化、情報監視等のために必要な、共通的でかつ複雑な実装を一から作成する必要がなく、運用管理上必要なロジックのみの実装に注力することが可能となる。
また、IDE(統合開発環境)と呼ばれる製品において、本発明を適用すれば、コードの補完や関連ソースの自動生成が行えるようになり、より効率化した運用管理アプリケーション開発のための環境を提供することが可能となる。
10 ソフトウェア開発支援装置(システム管理装置)
10a,10b ソフトウェア開発支援装置(Java(R)運用管理装置)
11a,11b JMXエージェント
12a,12b MBeanサーバ
13b 情報格納装置
20 コンテナ
20a,20b MBeanコンテナ
21 クラス記憶手段
21a MBeanクラス記憶手段
22 オブジェクト生成手段
22a MBean生成手段
23,23a 注釈情報記憶手段
24,24a 拡張機能記憶手段
25 オブジェクト拡張機能対応テーブル
25a MBean拡張機能対応テーブル
26,26a 拡張機能実行手段
27 単位オブジェクト実行手段
27a MBean実行手段
28b 永続化手段
30,30a,30b 注釈解析手段
40 所定の処理を実行する単位オブジェクトのクラス
40a,40b MBeanクラス
50(50−1,50−2) 単位オブジェクト
50a(50a-1,50a-2,・・),50b(50b-1,50b-2,・・) MBean
51 注釈情報オブジェクト
51a(51a-1,51a-2,・・),51b(51b-1,51b-2,・・) MBeanInfo
52b(52b-1,52b-2,・・) JMXに準拠していないJava(R)オブジェクト
53b(53b-1,53b-2,・・) ディスクリプタ領域
60 管理者端末
61 運用管理アプリケーション

Claims (18)

  1. 所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段と、前記クラスを読み込んで前記単位オブジェクトを生成するオブジェクト生成手段と、前記クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段とを有するオブジェクト管理手段と、
    前記クラスに含まれる注釈情報を解析する注釈解析手段と、を備え、
    前記オブジェクト生成手段が、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成し、
    前記単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、前記拡張機能実行手段が、前記拡張機能オブジェクトを実行する
    ことを特徴とするソフトウェア開発支援装置。
  2. 前記オブジェクト生成手段が、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、所定の注釈情報が含まれている場合、この注釈情報を含み、前記ソフトウェア開発支援装置に接続された端末における所定のアプリケーションにより参照される注釈情報オブジェクトを生成する
    ことを特徴とする請求項1記載のソフトウェア開発支援装置。
  3. 請求項1又は2記載のソフトウェア開発支援装置が、ジャバマネージメントエクステンションズ(Java(R) Management Extensions)エージェントを備え、前記オブジェクト管理手段及び前記注釈解析手段が、前記ジャバエクステンションマネージメントエージェント内に備えられ、
    前記単位オブジェクトが、エムビーン(MBean)であり、
    前記クラス記憶手段が、所定の処理を実行する一又は二以上のエムビーンを生成するためのエムビーンクラスを記憶し、
    前記オブジェクト生成手段が、前記クラスを読み込んで前記エムビーンを生成し、
    前記オブジェクト生成手段が、前記エムビーンの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成する
    ことを特徴とするソフトウェア開発支援装置。
  4. 前記注釈情報オブジェクトが、エムビーンインフォ(MBeanInfo)であることを特徴とする請求項3記載のソフトウェア開発支援装置。
  5. 前記拡張機能を実行するための注釈情報が、少なくとも経過時間の監視機能、割り込み機能、引数値の確認機能、変更情報の同期化機能のいずれかであり、
    前記オブジェクト生成手段が、前記注釈情報の解析結果にもとづいて、対応する機能を実行するための前記拡張機能オブジェクトを生成する
    ことを特徴とする請求項1〜4のいずれかに記載するソフトウェア開発支援装置。
  6. 前記エムビーンが、前記ソフトウェア開発支援装置に接続されたユーザ端末における業務用のアプリケーションにより呼び出されるエンタープライズジャバビーンズ(Enterprise Java(R) Beans)又はサーブレット(Servlet)を生成する他のオブジェクト管理手段からの各種情報を入力するためのオブジェクトである
    ことを特徴とする請求項3〜5のいずれかに記載するソフトウェア開発支援装置。
  7. 所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段と、前記クラスを読み込んで前記単位オブジェクトを生成するオブジェクト生成手段と、前記クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段とを有するオブジェクト管理手段と、
    前記クラスに含まれる注釈情報を解析する注釈解析手段と、を備えたソフトウェア開発支援装置と、
    前記ソフトウェア開発支援システムに接続された端末と、を有し、
    前記オブジェクト生成手段が、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成し、
    前記端末における所定のアプリケーションにより、前記単位オブジェクトが呼び出されて実行されると、前記拡張機能実行手段が、前記拡張機能オブジェクトを実行する
    ことを特徴とするソフトウェア開発支援システム。
  8. 前記オブジェクト生成手段が、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、所定の注釈情報が含まれている場合、この注釈情報を含み、前記端末における前記所定のアプリケーションにより参照される注釈情報オブジェクトを生成する
    ことを特徴とする請求項7記載のソフトウェア開発支援システム。
  9. 前記ソフトウェア開発支援装置が、ジャバマネージメントエクステンションズ(Java(R) Management Extensions)エージェントを備え、前記オブジェクト管理手段及び前記注釈解析手段が、前記ジャバマネージメントエクステンションズ内に備えられ、
    前記単位オブジェクトが、エムビーン(MBean)であり、
    前記クラス記憶手段が、所定の処理を実行する一又は二以上のエムビーンを生成するためのエムビーンクラスを記憶し、
    前記オブジェクト生成手段が、前記クラスを読み込んで前記エムビーンを生成し、
    前記オブジェクト生成手段が、前記エムビーンの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成する
    ことを特徴とする請求項7又は8記載のソフトウェア開発支援システム。
  10. 前記注釈情報オブジェクトが、エムビーンインフォ(MBeanInfo)であることを特徴とする請求項9記載のソフトウェア開発支援システム。
  11. 所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶し、
    前記単位オブジェクトの生成にあたり、前記クラスを読み込んで、前記クラスに含まれる注釈情報を解析し、前記注釈情報の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき拡張機能オブジェクトを生成し、
    前記単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、前記拡張機能オブジェクトが実行される
    ことを特徴とするソフトウェア開発支援装置の機能拡張方法。
  12. 前記単位オブジェクトの生成にあたり、前記注釈情報の解析の結果、所定の注釈情報が含まれている場合、この注釈情報を含み、前記ソフトウェア開発支援装置に接続された端末における所定のアプリケーションにより参照される注釈情報オブジェクトを生成する
    ことを特徴とする請求項11記載のソフトウェア開発支援装置の機能拡張方法。
  13. 前記ソフトウェア開発支援装置が、ジャバマネージメントエクステンションズ(Java(R) Management Extensions)エージェントを備え、
    前記単位オブジェクトが、エムビーン(MBean)であり、
    前記クラスが、所定の処理を実行する一又は二以上のエムビーンを生成するためのエムビーンクラスであり、
    前記ソフトウェア開発支援装置が、前記エムビーンの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成する
    ことを特徴とする請求項11又は12記載のソフトウェア開発支援装置の機能拡張方法。
  14. 前記注釈情報オブジェクトが、エムビーンインフォ(MBeanInfo)であることを特徴とする請求項13記載のソフトウェア開発支援装置の機能拡張方法。
  15. ソフトウェア開発支援装置を、
    所定の処理を実行する一又は二以上の単位オブジェクトを生成するためのクラスを記憶するクラス記憶手段、
    前記クラスを読み込んで前記単位オブジェクトを生成するオブジェクト生成手段、
    前記クラスに対応する拡張機能オブジェクトを実行する拡張機能実行手段、及び、
    前記クラスに含まれる注釈情報を解析する注釈解析手段として機能させ、
    前記オブジェクト生成手段に、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成させ、
    前記単位オブジェクトが所定のアプリケーションから呼び出されて実行されると、前記拡張機能実行手段に、前記拡張機能オブジェクトを実行させる
    ことを特徴とするソフトウェア開発支援装置の機能拡張プログラム。
  16. 前記オブジェクト生成手段に、前記単位オブジェクトの生成にあたり、前記注釈解析手段の解析の結果、所定の注釈情報が含まれている場合、この注釈情報を含み、前記ソフトウェア開発支援装置に接続された端末における所定のアプリケーションにより参照される注釈情報オブジェクトを生成させる
    ことを特徴とする請求項15記載のソフトウェア開発支援装置の機能拡張プログラム。
  17. 前記ソフトウェア開発支援装置が、ジャバマネージメントエクステンションズ(Java(R) Management Extensions)エージェントを備え、前記クラス記憶手段、前記オブジェクト生成手段、前記拡張機能実行手段、及び前記注釈解析手段が、前記ジャバマネージメントエクステンションズエージェント内に備えられ、前記単位オブジェクトが、エムビーン(MBean)であり、
    前記クラス記憶手段に、所定の処理を実行する一又は二以上のエムビーンを生成するためのエムビーンクラスを記憶させ、
    前記オブジェクト生成手段に、前記クラスを読み込んで前記エムビーンを生成させ、
    前記オブジェクト生成手段に、前記エムビーンの生成にあたり、前記注釈解析手段の解析の結果、拡張機能を実行するための注釈情報が含まれている場合、当該注釈情報の解析結果にもとづき前記拡張機能オブジェクトを生成させる
    ことを特徴とする請求項15又は16記載のソフトウェア開発支援装置の機能拡張プログラム。
  18. 前記注釈情報オブジェクトが、エムビーンインフォ(MBeanInfo)であることを特徴とする請求項17記載のソフトウェア開発支援装置の機能拡張プログラム。
JP2009096290A 2009-04-10 2009-04-10 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム Active JP5396979B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009096290A JP5396979B2 (ja) 2009-04-10 2009-04-10 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
US12/724,562 US8621429B2 (en) 2009-04-10 2010-03-16 Software development support apparatus, function extension method and storage medium for storing function extension program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009096290A JP5396979B2 (ja) 2009-04-10 2009-04-10 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2010250378A true JP2010250378A (ja) 2010-11-04
JP5396979B2 JP5396979B2 (ja) 2014-01-22

Family

ID=42935354

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009096290A Active JP5396979B2 (ja) 2009-04-10 2009-04-10 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム

Country Status (2)

Country Link
US (1) US8621429B2 (ja)
JP (1) JP5396979B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016115296A (ja) * 2014-12-18 2016-06-23 日本電気株式会社 プロセス管理装置、方法及びプログラム
KR20190088728A (ko) * 2018-01-19 2019-07-29 기산전자 주식회사 원격 지폐 인식 프로그램 개발을 위한 지폐 정사기 및 매니징 장치와 이들의 제어 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707276B2 (en) * 2011-01-07 2014-04-22 Mastercard International Incorporated Method and system for managing programmed applications in an open API environment
US9083534B2 (en) 2011-01-07 2015-07-14 Mastercard International Incorporated Method and system for propagating a client identity
US9032204B2 (en) 2011-01-07 2015-05-12 Mastercard International Incorporated Methods and systems for providing a signed digital certificate in real time
US9998348B2 (en) * 2014-07-31 2018-06-12 Cisco Technology, Inc. Monitoring a business transaction utilizing PHP engines
GB2552605A (en) 2015-05-27 2018-01-31 Google Inc Enhancing functionalities of virtual assistants and dialog systems via plugin marketplace
CN107430517B (zh) * 2015-05-27 2020-12-18 谷歌有限责任公司 用于增强对话系统的插件的在线市场
US10394531B2 (en) * 2017-04-29 2019-08-27 Cisco Technology, Inc. Hyper dynamic Java management extension
GB2573775A (en) * 2018-05-16 2019-11-20 Sage Uk Ltd Application Deployment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232136A (ja) * 1998-02-17 1999-08-27 Ricoh Co Ltd オブジェクト指向ソフトウエア開発支援装置
JP2000503430A (ja) * 1996-01-16 2000-03-21 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 分散処理
JP2011504268A (ja) * 2007-11-20 2011-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・コンポーネントを作成するための方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09222974A (ja) 1996-02-16 1997-08-26 Fuji Xerox Co Ltd 言語解釈表示方法とその方法を用いた装置およびシステム
US6275868B1 (en) * 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
JP2008210059A (ja) 2007-02-23 2008-09-11 Nec Corp 情報処理装置、デバッグ支援方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000503430A (ja) * 1996-01-16 2000-03-21 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 分散処理
JPH11232136A (ja) * 1998-02-17 1999-08-27 Ricoh Co Ltd オブジェクト指向ソフトウエア開発支援装置
JP2011504268A (ja) * 2007-11-20 2011-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・コンポーネントを作成するための方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016115296A (ja) * 2014-12-18 2016-06-23 日本電気株式会社 プロセス管理装置、方法及びプログラム
KR20190088728A (ko) * 2018-01-19 2019-07-29 기산전자 주식회사 원격 지폐 인식 프로그램 개발을 위한 지폐 정사기 및 매니징 장치와 이들의 제어 방법
KR102080841B1 (ko) 2018-01-19 2020-02-24 기산전자 주식회사 원격 지폐 인식 프로그램 개발을 위한 지폐 정사기 및 매니징 장치와 이들의 제어 방법

Also Published As

Publication number Publication date
JP5396979B2 (ja) 2014-01-22
US8621429B2 (en) 2013-12-31
US20100262956A1 (en) 2010-10-14

Similar Documents

Publication Publication Date Title
JP5396979B2 (ja) ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
US7707553B2 (en) Computer method and system for automatically creating tests for checking software
Schmidt Model-driven engineering
US7793256B2 (en) Methods and systems for supporting and deploying distributed computing components
US7743282B2 (en) Capturing computer application diagnostics
US20110191747A1 (en) Supporting and deploying distributed computing components
US20080301648A1 (en) Model oriented debugging
Nakagawa et al. An aspect-oriented reference architecture for software engineering environments
CA2393043A1 (en) Formal test case definitions
US20120174068A1 (en) Testing Software Code
US10083029B2 (en) Detect application defects by correlating contracts in application dependencies
US7624381B1 (en) Portable detection of start and completion of object construction
Ortin et al. The DSAW aspect-oriented software development platform
Liu et al. A unified test framework for continuous integration testing of SOA solutions
US9489179B2 (en) Application programming interface tracing mechanism
Zheng et al. Comprehensive multiplatform dynamic program analysis for Java and android
WO2008015110A2 (en) Methods, apparatus and computer programs for modelling computer programs
Gregersen Implications of modular systems on dynamic updating
CN111880775A (zh) 多模块分层架构实现方法、装置、电子设备、存储介质
Sadovykh et al. Architecture driven modernization in practice–study results
KR101506656B1 (ko) 애플리케이션 품질 관리를 위한 시스템 및 그 방법
Lin et al. A style for integrating MS‐Windows software applications to client–server systems using Java technology
CN117742783B (zh) 用于软件系统的日志数据跨语言自动记录方法
JP2014106770A (ja) 型チェック装置、型チェック方法および型チェックプログラム
Schaefer et al. Model-based performance instrumentation of distributed applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130904

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: 20130924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131007

R150 Certificate of patent or registration of utility model

Ref document number: 5396979

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150