InfoQ

News

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

作者 Srini Penchikala, 翻訳者 金森 諭 投稿日 2008年5月16日 午後6時25分

コミュニティ
Java
トピック
タグ
EJB,
オープンソースJava

オープンソースの軽量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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。