IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  WebSphere  >

クラスローダーとJ2EEパッケージング戦略を理解する: 第6回「キャッチ・アップ」

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません


レベル: 上級

夷藤 勇人, ソフトウェア事業, IBM

2007年 12月 05日

J2EE開発プロジェクトにおいて必要不可欠なJ2EEパッケージング戦略とはなにか?すべてのJ2EE開発者が正しいJ2EEパッケージング戦略をとれるように、詳細にその理論・方法を解説していきます。

はじめに

シリーズ「クラスローダーとJ2EEパッケージング戦略を理解する」、最終回となる第6回は、Q/A集をお届けします。




上に戻る


WAS V6.1からは、クラスローダーの仕組みが変わったと聞きましたが?

WebSphere Application Server バージョン6.1からはその内部アーキテクチャとして、OSGiが採用されました。 OSGiについては詳しく知る必要はありませんが、ユーザーの立場から見た場合の最も大きな恩恵は以下の通りです。

  • WebSphere自身が使用しているライブラリ・クラスが、アプリケーションからは見えなくなった

一見地味な変更点ですが、アプリケーション開発者にとっては、こんなにうれしいことはありません。 バージョン6.0まではWebSphere自身が使用しているライブラリと、同じライブラリをアプリケーションが独自に用意して使用する場合は、クラスローダーのデリゲーション・モードを「Parent Last」にすることは必須でした。 バージョン6.1からはその必要性が大幅になくなるのです。

バージョン6.0以下を使用していてクラスローダーの問題で四苦八苦している場合は, いっそのこと、6.1以上を使用することで、あっけなく解決するかもしれません。




上に戻る


WAS以外のアプリケーション・サーバーだと、もっと楽をできると聞きましたが?

例として、オープンソースのJava EEサーバー、Apache Geronimoを見てみましょう。Apache Geronimoには、「クラスを隠す」機能が備わっています。

たとえば、Apache Geronimo自身が使用している、「org.apache.commons.*」クラスを、特定のWebアプリケーションから隠したいとしましょう。この場合は、以下のような設定で実現可能です。


Geronimo独自のWebアプリケーション設定ファイル
                
<web-app ...>
  <hidden-classes>
      <filter>org.apache.commons</filter>
  </hidden-classes>
                                                            

この機能は非常にシンプルですが、実際のところ非常にうまく機能して、エレガントにクラス衝突の問題を回避できます。




上に戻る


Java EE 5になるとなにか変わりますか?

パッケージングの観点から、ひとつ便利な機能が追加されました。 EAR内の全てのモジュールで共通に使用したい「ユーティリティJava」の置き場所として、「ライブラリ・ディレクトリ」を指定できるようになりました。何も指定しない場合は、ライブラリ・ディレクトリとして「lib」が使用されます。 ライブラリ・ディレクトリに置いたJarファイルは自動的に認識されます。設定は不要です。 使用例は以下のようになります。


                
<EAR-Root>/lib/utility-bar.jar
<EAR-Root>/lib/utility-foo.jar
                                                            

これは、Webアプリケーションにおける「<WAR-Root>/WEB-INF/lib」に相当するものです。 EAR全体でもようやく同等の機能が追加されたことになります。

コンフィグレーションよりコンベンションを重視するというJava EE 5の思想の一例といえるでしょう。




上に戻る


最後に

もともとのこのシリーズの執筆動機は、「クラスローダーの問題で悩んでいる開発者をなんとか助けたい。」というものでしたが、WebSphere Application Server バージョン6.1の登場や、またApache Geronimoのような後発ならではの便利なクラス・フィルタリング機能により、ようやくこの使命を終えることができそうです。



参考文献



著者について

著者である夷藤氏は、現在IBMにおいて、WebSphere Application Serverの技術支援を担当しており、多くのJ2EEプロジェクトにおいてシステムデザインやアプリケーション開発の助言を行っています。また、業界標準パフォーマンス評価団体、 SPECにおけるJ2EEアプリケーション・サーバー評価システム、 SpecJAppServer2002の開発を行っていました。

SPEC (US)
SpecJAppServer2002 (US)

専門はJava/J2EEですが、彼の興味はサーバーサイドのみならずクライアントサイド・テクノロジー、Python、Eclipseなどへと多岐に渡っており、雑誌「Eclipseパーフェクトマニュアル」でのテストファースト・プログラミングに関する記事執筆や、Eclipse - RCPJava/J2EEに関する講演活動などでもおなじみです。

Eclipse - RCP
Java/J2EE




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ