LiferayのwarファイルをJBossにセットアップされると分かりますが、Liferayには2つのjarファイルがあります。1つはLiferayが標準で提供するエンティティのインターフェース、もう一つはそのインターフェースの実装である。
インターフェース(service-api.jar)は他アプリケーション(他warファイル)からも利用できるようにアプリケーションサーバのlibディレクトリに配置される(tomcatの場合はlib\ext)
このインターフェースの実装はwarファイルroot下のweb-inf\libに配置されている。
このように実装とインターフェースを分離するjarファイルを分離することが重要です。Liferayで開発するポートレットもこのようにインターフェースと実装を分離します。このようにすることで他ポートレット(他warファイル)のインターフェースを利用することができます。また、インタフェースとは別に実装のもを置き換える(再デプロイ)することができます。
例えば投票用の機能を追加する場合は、以下のようなポートレットを作成します:
①一般ユーザが投票を行うポートレット
②候補者、選挙期間など情報の入力/編集するポートレット
③投票結果を集計して当選者を表示するポートレット
④Liferayが標準で提供するユーザ、組織、権限などの管理を行うポートレット
これらのポートレットはアプリケーションサーバ上では別々のwarファイルになります。
これらのポートレットは個別に責務となるエンティティがあります。例えば、投票するためにログインするすべてのユーザはLiferayが管理するので、「ユーザ」エンティティはLiferayが持ちます。選挙の説明や期間などの情報をもつ「選挙」エンティティは選挙ポートレットがもちます。「候補者」エンティティも選挙ポートレットに持たせます。
Liferayの場合は、昨日紹介したLiferay IDEを利用してこれらのエンティティ定義をポートレットプロジェクト毎のservice.xmlファイルで定義します。エンティティの属性は、画面などの項目などをモデリングします。エンティティの画面は以下のような関係をもちます。下の図のエンティティはservice.xmlのエンティティの他にjspから呼び出される業務エンティティも含みます。これらの業務エンティティはポートレットのローカルサービス及び他ポートレットのリモートサービスを組み立てて利用します。なお、公開されるサービス内からも他ローカル及びリモートサービスを組み立てたりして利用することもできます。
定義した後にサービスビルダ(antコマンド)を利用してインターフェースと実装の枠組みを生成します。
生成されなかったインターフェースをimplクラスに定義して再びサービスビルダを実行すると、それらのインターフェーイスはinterfaceに追加されます。
ポートレット間の実装は疎結合のため、迅速にポートレットに機能を追加したりすることができます。また、新しい要件に対応するポートレットを開発する場合でも、既存のポートレットの機能を利用することができます。
Liferayの場合は標準でユーザ、組織、権限、ワークフロー、ファイル管理、検索などの基盤ポートレットの他にも翻訳、天気、株価などのポートレットが用意されています。それらのポートレットは画面ページに張る付けるだけではなく、他ポートレットからも利用することができるのが特徴です。
このように開発した資産が、疎結合で利用できるのが本当のSOAです。
Special
- PR -| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。







ストレス社会との付き合い方
「思いやり経営」のススメ
テレワークが労働者のマインドを変える
求む、クックパッド男子
37歳の常識――我々は一生学び続ける