BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OpenEJB 3.0がリリース:EnumsやCollectionsのDI、OSGi、EJB 3.0の諸機能をサポート

OpenEJB 3.0がリリース:EnumsやCollectionsのDI、OSGi、EJB 3.0の諸機能をサポート

オープンソースの軽量EJB実装フレームワークであるOpenEJB(source)は、1年半の開発を経て3.0のファイナルバージョンが最近リリースされた(source)。 OpenEJB 3.0ではEnums・Collections・Mapsの依存性注入(DI)、OSGi、EJB3.0仕様がサポートされている。また最新バージョンでは、@EJBを使った他のEARファイルにあるLocal Interfaceの参照、トランザクションのログ取得、HTTP接続でのEJB呼出ができ、またBusiness InterfaceのようなEJB 3.0での新機能やJPA(Java Persistence API)、JAX-WS(Java API for XML-Based Web Services)(サイト・英語)をサポートしている。

この新しいバージョンにはいくつものコードに関する改善とバグフィックスも含まれ、それらはOpenEJBのウェブサイトにあるリリースノートに記載されている(source)。Alexander Saint Croix氏の最近のブログ記事(source)では今回のリリースに含まれた新しい機能や改善点、バグフィックスがリストアップされている。

OpenEJBはさまざまなオープンソースフレームワークを利用していて、たとえばJPAとCMP(Container-Managed Persistence)にはOpenJPA(サイト・英語)、JMS(Java Messaging Service)とMDB(Message-Driven Beans)にはActiveMQ(サイト・英語)、JAX-WSにはApache CXF(サイト・英語)が使われている。OpenEJBの機能の中にはCollapsed EAR(EJBとサーブレットを一緒にアーカイブでき、クラスローダでも一緒に扱える)(サイト・英語)や単体テスト向けの組込可能なEJBコンテナといったEJB 3.1仕様(サイト・英語)での主要な新機能も含まれている。ちなみにJava EE 6(サイト・英語)で取り込まれる予定のEJB 3.1 LiteプロファイルはOpenEJBとよく似たものになっている。

Java EEコンテナへの組み込み

OpenEJB 3.0をTomcat 6(サイト・英語)サーバにプラグインすることでWebアプリでのEJBがサポートされる。OpenEJBをTomcatに加えることによって、サーブレットでJava EE 5のJPAやJAX-WS、JMS、J2EE ConnectorやTransactionといった機能が使えるようにもなる。OpenEJBはそれ自体でもGlassfish(サイト・英語)の記述子やGeronimo(サイト・英語)、WebLogic(サイト・英語)の一部の記述子をサポートしている。

OSGiのサポート

OpenEJBフレームワークはOSGi(サイト・英語)バンドル(OSGiの構成部品)として作られ、それにより全てのOpenEJB 3.0のバイナリにOSGiのメタデータが付属し、またどのOSGiプラットフォームでもバンドルとして利用できる。OSGiベース(Apache Felix(source)をベースにしている)でオープンソースのESB(Enterprise Service Bus:ミドルウェアの連携基盤)フレームワークであるServiceMix でもServiceMix 4(source)からOpenEJBが取り込まれる。

OpenEJBプロジェクトの共同創立者であるDavid Blevins氏は、最新版(source)についてとプロジェクトが再び盛り上がっている(source)ことについてブログを書いている。InfoQは彼にOpenEJB 3.0の機能と今後のプロジェクトのロードマップ、特にEJB 3.1仕様のサポートについて話を聞いた。

 EnumsオブジェクトCollectionsオブジェクトのDIサポートをEJBに取り入れることはエンタープライズJavaのディベロッパにとってどのような意味があるのか?それはEJBコンポーネントの設計と開発においてどのような助けとなるのだろうか?

要はEJBディベロッパ(あるいはTomcatでOpenEJBを使うサーブレットディベロッパ)がJava EEのDI機能を利用できるようになり、それを自分で作れるということです。Enum、Class、そしてCollectionsが標準な型として追加されています。これらにはJava EE 6に盛り込まれるはずのものあります。そして、java.beans.PropertyEditor(source)のインスタンスをアプリに置くことで独自のオブジェクトを注入することができます。このような機能追加は独自のオブジェクトやリソースを注入するのにも活用でき、Java EEを汎用的なDIフレームワークとしてもっと使いやすいものにします。

 Java EEコンテナ外にあるEJBクラスの単体テストについてOpenEJBフレームワークではどのようにテスト駆動開発が行われるのか、という問いに対して彼はOpenEJBに組み込まれたテスト機能について語った。

 これによって実際使われるようにEJBを使った単純な単体テストが書けるようになります。実際のと違う点はコンテナとEJBが同一VMで動くことです。 OpenEJBはアプリケーションに対して設定したクラスパスを読み取り、そのクラスパスをテストがJNDI経由で参照できるようにします。ローカルのコンテナでもリモートのコンテナでも、それぞれに応じたInitialContextFactoryを使うことができますし、組み込みデータベースに対しても同じことができます。EJBのどのような面についてもテストができるのです。制限はありません。ウェブサービスやステートフルなビーン、拡張した Entity Manager、JTA(サイト・英語) EntityManagerを使ったステートレスなビーンでもテストでき、トランザクションについてもテストケースを作れます。OpenEJBのようなテスト機能はEJB 3.1にも取り入れられると思います。

OpenEJB 3.0で提供されるOSGiのサポートとOpenEJBで作ったものをOSGiバンドルとして使う意味について。

今のところOpenEJBでのOSGiのサポートは、EJBを使えるバンドルとしてOpenEJBをOSGiプラットフォームに加えたいと望んでいる人々の動きに合わせたものです。またApache ServiceMix(サイト・英語)(OpenEJBと同じようにサポートを行っています)のようなプロジェクトを中心にして、EJB WebServicesのサポートを主な目的として動こうとしているところです。OpenEJBバンドルで利用できるように作られたEJBのjarファイルを含むバンドルがデプロイされるようになると思います。

OpenEJB 3.0にHTTPでEJBを使用する機能が含まれていることは大変興味深い。この機能にはどのような効果があるのか、その裏にはどのような動機があったのかを聞いた。

きっかけはファイアーウォールの制約を迂回できるようにすることと、Tomcat/OpenEJBのユーザがEJBとサーブレットの両方を単一のポートを経由して動かせるようにすることでした。この機能はサーブレットによって使え、どんなアプリでも追加や削除ができたりSSLを使うようにしたりできます。究極の目的はRESTfulにEJBを使用できるようにすることです。将来の3.xのバージョンでそれができるようになると思います。

Java EE 6にはEJB 3.1の仕様がJEEの一部として取り込まれる。EJB 3.1がリリースされた後のOpenEJBチームのプランはどうなのだろうか。

OpenEJBは、ここで話したことや私たちが1.0で備えたWAR内のEJBなど、EJB 3.1で含まれることを既に多く備えています。私自身はEJB 3.1 Expert Groupにかなり関わっていますし、EJB 3.1が進展することは私にとってエキサイトなことで、今のとこOpenEJBで成されたことをフィードバックする役割も担っています。私たちはこのような連携が続くことを望んでいますし、シングルトンや非同期ビーンのような現在提案されている機能についても仕様が確定するずっと前から取り組みたいと考えています。

新しい機能や新しい機能強化に関してOpenEJBプロジェクトのロードマップについて聞いた。

 プレビューとして発表された@Singletonや@AsynchronouやNo-interface viewといったEJB 3.1関係の機能の多くがOpenEJBにも取り入れられでしょうし、そのような機能でパブリックになっているものはOpenEJBのロードマップにも置かれています。組込サポートやTomcatとの統合は常にあれこれ考えられています。またクラスタリングやCMP/JPAアダプタの改良、EJB 2.xアプリケーションをEJB 3.0に変換する(正確には記述子をベースにしてアノテーションを加える)Eclipseプラグイン、最適化されたパーシングコードを生成するJAXB(サイト・英語)の互換実装による主要なWebServiceのパフォーマンス向上、といった多くの活動が行われています。

OpenEJB 3.0はOpenEJBのウェブサイトからダウンロードできる(source)またOpenEJBの開発チームは、デベロッパがさまざまなケースでどのようにこのフレームワークを使えばいいかが分かるようにEJBを使ったサンプル集(source)も提供している。

原文はこちらです:http://www.infoq.com/news/2008/05/openejb-3.0-release

この記事に星をつける

おすすめ度
スタイル

BT