SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースApache Tuscanyで楽しむSOA

オープンソースApache Tuscanyで楽しむSOA
第5回「Webサービスでコンポーネント同士をワイヤリングしましょう」

WSDLもSOAPも現れない不思議なWebサービスの世界


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (19.1 KB)

タイムセールスの機能を組み込む

 前回約束したとおり、タイムセールスの機能を入れてみましょう。タイムセールスの時間帯というものは毎日同じとは限りません。このような場合はプログラム内に時刻の値を持つと、時間帯を変更するたびにビルドし、再起動しなくてはならなくなります。せめて、ビルドすることなく時間帯を変更したいものです。それを実現するための1つの方法がプロパティです。再起動したときに自動的にコンポーネントに値が渡されます。いわゆる依存性注入DI:Dedendecy Injection)です。これはSCAが発明したわけではなく、Spring等で実装されているDIと同じです。SCAに準拠したSOA製品であるなら、リファレンスとプロパティはDI可能です。

コンポジットファイルの設定

 具体的にはコンポジットファイルのcomponentの子要素にproperty要素を追加します。そのname属性値がコンポーネントのメンバ変数に相当します。property要素内容が実際に渡される値です。図12ではstartTimeとendTimeという名前のプロパティがそれぞれ18と20という値を持っています。property要素はcomponent要素内だけでなく、component要素と同じレベルで指定することで、すべてのコンポーネントに値を設定することが可能です。参照の仕方は簡単ですが、XPathを使用すると複雑な参照も可能です。

図12:コンポジットファイル内のproperty要素
図12:コンポジットファイル内のproperty要素

実装ファイルでの設定

 @Propertyアノテーションのためのインポートと、プロパティを取り込むための設定するためのメンバ変数を宣言します(図13)。またプロパティを取り込むためのセッターメソッドも記述します(図14)。セッターメソッドの上に@Propertyアノテーションを指定します。2つの受け取った値の時間帯にあるか判定し、時間帯内なら2割引き、時間帯外なら割引なしとしています。詳しくはサンプルファイルで確認してください。

図13:プロパティの値を受け取るためのメンバ変数の宣言
図13:プロパティの値を受け取るためのメンバ変数の宣言
図14:プロパティの値を受け取るためのsetterメソッド
図14:プロパティの値を受け取るためのsetterメソッド

 図15は時刻が23時だったため、割引されていません。

図15:時間帯外の場合の表示
図15:時間帯外の場合の表示

 図16のようにpropertyの値を22と24と設定しなおし、再起動すると図16のように2割引きされています。タイムセールスの時間帯の情報も22:00~24:00と自動的に変わるようになっています。

図16:プロパティの値を変更
図16:プロパティの値を変更
図17:時間帯内の表示
図17:時間帯内の表示

 次回は、WSDLファイルを使ったWebサービスによるコンポーネントの組み合わせを紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
オープンソースApache Tuscanyで楽しむSOA連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4474 2009/11/25 19:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング