Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Apache Beehiveの開発を体験する(コントロール作成編)

Apache Beehiveによるコントロールの作成と利用

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/05/12 13:00

企業の業務システムや電子商取引などのアプリケーションで、J2EEは急速に普及してきました。また近年、SOA(サービス指向アーキテクチャ)と呼ばれる大規模なシステムを複数のサービスとして分割して開発する手法が脚光を浴びています。今回は、これらJ2EEやSOAのアプリケーションを簡易に開発することを目的としたApache Beehiveを取り上げ、その概要とコントロールについて詳細に解説をします。

目次

はじめに

 企業の業務システムや電子商取引がJavaでWeb化されるにつれ、J2EEは急速に普及してきました。しかし、その複雑すぎる仕様が高い学習コストとバグの原因にも繋がり、多くの開発者を悩ませてきました。また近年、SOA(サービス指向アーキテクチャ)と呼ばれる、大規模なシステムを複数のサービスとして分割して開発する手法が脚光を浴びています。今回は、これらJ2EEやSOAのビジネスアプリケーションを簡易に開発することを目的にApache Software Foundationが開発を進めているApache Beehiveを取り上げ、その概要とコントロールについて詳細に解説します。

対象読者

 J2EEアプリケーションの開発者。またはJ2EEの開発に興味がある読者。

環境

 本稿では、Apache Beehiveで実装されたサンプルアプリケーションが正しく動作する環境が必要になります。必要なものを表にまとめました。Beehiveに関しては、サンプルアプリケーションに含めているためダウンロードしなくても動作します。なお、J2SE、Tomcatの基本的な環境設定について知りたい方は、サーバサイド技術の学び舎 - WINGSにある「サーバサイド環境構築設定」を参照してください。注意点として、Apache Beehiveでは、アノテーション(注釈)などの機能を多用しているため、J2SE 5.0以上でなければ正常に動作しません。

必要なライブラリ
ライブラリバージョンダウンロード元
J2SE5.0http://java.sun.com/j2se/1.5.0/download.jsp
Ant1.6.5http://ant.apache.org/bindownload.cgi
Tomcat5.5.12http://tomcat.apache.org/download-55.cgi
Beehive1.0.1http://beehive.apache.org/releases/release-1.0.1.cgi

J2EEの複雑さ

 J2EEには、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JDBC(Java DataBase Connectivity)、JCA(J2EE Connector Architecture)などのさまざまな仕様が存在します。それら多くの仕様は使いこなすことにより非常に大きなメリットをもたらしますが、正しく使いこなすには、簡単に上げるだけでも次のような知識が必要となります。

  • JNDIによるリソースの取得
  • EJBのリモート/ホームインターフェイスを利用してビジネスメソッドにアクセスする方法。またステートレスセッションBean、ステートフルセッションBeanの違いと使い分け
  • JMSの接続/セッションとメッセージの作成方法、キューへの参照
  • コンフィグレーションファイル(ejb-jar.xmlなど)への設定

 これらの複雑さにより、J2EEは非常に学習コストが高いものであり、多くの開発者から敬遠されてきました。さらに、その複雑さから設定ファイルのミスなども起こりやすく、バグやシステムのパフォーマンスにも影響を与えてきました。

Apache Beehive

 Apache Beehiveは、J2EEアプリケーションやWEBサービスを容易に、かつ効率的に開発するために立ち上げられたプロジェクトで、次の3つのサブプロジェクトに分かれています。

Beehiveのサブプロジェクト
サブプロジェクト名概要
NetUIStrutsをベースとしたWebアプリケーションのフレームワーク。メタデータの機能を使用することにより、「struts-config.xml」に記述していた設定を自動生成する機能をもつ。
コントロールメタデータを使用することにより、容易にコンポーネント開発を行えるようにした軽量コンポーネントフレームワーク。
Web Service Metadata(WSM)アノテーションを利用したWebサービス用の駆動プログラミングモデル。JSR181の実装。

 これらのサブプロジェクトは、1つのアプリケーションですべてのサブプロジェクトを取り込んだり、どれか1つのサブプロジェクトを単体として取り込んだりして、効率的な開発を行うことができます。

アノテーションの基礎知識

 Apache Beehiveでは、J2SE 5.0の新機能として追加されたアノテーション(=注釈、JSR175)というメタデータ機能が多用されています。そのため、アノテーションの基本的な知識について知っている必要があるため、ここで簡単にですが解説します。「アノテーション」とは、Javaのコードにメタデータ機能をもたせたものです。「メタデータ」とは、データに関する情報のことで、ここではJavaコードのパッケージ、クラス、フィールド、メソッド、パラメータ、変数などのデータに対して、ある特定の情報を付けることを意味します。例えば、あるメソッドに対してOverrideアノテーションを付けることによって、そのメソッドがスーパークラスからオーバーライドされたものであるかをコンパイル時にチェックするといったことが可能です。アノテーションはクラスやインターフェイスと同じように通常、1つのファイルに1つのアノテーションとして記述されます。中身がないシンプルなアノテーションは次のように記述できます。

public @interface Test { }

 @interfaceという見慣れない記述がありますが、これがアノテーションの宣言を意味しています。このアノテーションは、先ほどの説明の通り、クラスやメソッドに対して付けることができます。例えば次のようにして、nameという名前のStringフィールドにTestアノテーションを付加しています。

@Test private String name;

 これらのようにアノテーションを付けることで、「このメソッドは~~~のメソッド」、「このクラスはコントロールのためのクラス」などの意味をつけ、IDE(統合開発環境)やソースからの自動生成処理などでそれを読み取り、データチェックなどの処理を施すことができるようになります。

コントロールの概要とアーキテクチャ

 ここからは、Beehiveのコントロールの解説に入ります。コントロールは、先にも説明したようにアノテーション機能をフルに使うことによって、容易にコンポーネント開発を行えるようにしたものです。これまでJ2EEでは、さまざまなリソースへアクセスするためのコーディングを個別に書いていましたが、それらの記法を統一化することができます。また、ツールによる開発も簡単に行えるように考慮されているため、開発生産性を高めることができます。

コントロールの構成

 基本的なコントロールは、次の3つのクラスで構成されています。

コントロールの構成クラス
名前概要
コントロールパブリックインターフェイスコントロールの一連の処理とイベントを定義したもの
コントロール実装クラスコントロールパブリックインターフェイスを実装したもの
コントロールBeanクラスコントロールパブリックインターフェイスとコントロール実装クラスをもとに生成されるJavaBean

 新しいコントロールを作成するには、コントロールパブリックインターフェイスとコントロール実装クラスを作成する必要があります。コントロールBeanクラスはそれをもとに、BeehiveのオプショナルAntタスクによって自動的に生成されます。以下にそのクラスの関係図を載せます。以降の項でこのクラスを作成していきますので、関係図を頭に入れておいてください。

コントロールのインターフェイスとクラスの関係図
コントロールのインターフェイスとクラスの関係図

 さらに、それらで構成されるコントロールが、コントロールを利用するクライアントとコントロールから参照されるリソースとの関係を示したのが下の図になります。

コントロールアーキテクチャの要素とフロー図
コントロールアーキテクチャの要素とフロー図

 また、コントロールにはコントロールを構成する各要素が存在します。要素の一覧を以下の表にまとめました。

コントロールの要素一覧
要素名概要
操作クライアントの要求に応えてコントロールが実行するアクション
イベント一定の条件が一致したり、内部イベントが発生した場合に、コントロールからクライアントへ通知されるアクション
プロパティクライアントから渡されるパラメータ
コンテキストコントロール内外のさまざまなプロパティ、サービスにアクセスするためのもの
コンテキストライフサイクルイベントコントロールの初期化~終了などのライフサイクルに基づいて、定義されたイベント

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 佐藤 真介(サトウ シンスケ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Apache Beehiveの開発を体験する
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5