S2Axis 開発記 静的起動クライアント
こちらもさぼりまくっている S2Axis.
アルファ版リリースへ向けて残っているのは
- クライアントの静的起動
- HTTP セッションを利用したステートフルなサービス
といったところなのですが,後者は Web サービスの標準にはない Axis 固有の機能を使うので,なくてもいいような気もする今日この頃.
いやその,決してさぼりたいだけというわけではあうあう.心より恥じる.
そんなわけで静的起動ですが,ちょっと悩んでいたのです.
「Axis ユーザガイド」によると,静的起動は次のように使うそうです.
public class Tester { public static void main(String [] args) throws Exception { // Make a service AddressBookService service = new AddressBookServiceLocator(); // Now use the service to get a stub which implements the SDI. AddressBook port = service.getAddressBook(); // Make the actual call Address address = new Address(...); port.addEntry("Russell Butek", address); } }
変数名がアレなんで分かりにくいですが,ここでクライアントが主に使いたいのは port
という変数で参照している AddressBook
型のオブジェクト.これがサービスのスタブ (プロキシ) です.
そのスタブを入手するために,AddressBookServiceLocator
の getAddressBook()
を呼び出しています.つまり,サービスロケータってファクトリなんですね.ってことは...
Spring なら FactoryBean
を使えばいいじゃん! って感じなのですが,S2 にはそういうのはないはず.
どうしたものか...
そうしたら,ちょうど今日 Seasar-user ML にその話題が流れてるじゃないですか.
なんか,OGNL を使うということで FA らしい.
こんな感じ.
<component name="addressBookLocator" class="AddressBookServiceLocator"/> <component name="foo" class="..."> <property name="addressBook">addressBookLocator.getAddressBook()</property> </component>
これで,foo
という名前のコンポーネントの addressBook
というプロパティに,AddressBookServiceLocator
から取得したスタブが DI されます.
なるほど,悪くないですね.
ってことは,S2Axis として実装するものは何もないってこと? ラッキー♪
いやその,決してさぼりたいだけというわけではあうあう.心より恥じる.
遠くない未来に,ドキュメントとサンプルで頑張るということで.m(__)m
ところで,一応 SourceForge でアカウント作ったのですが,その後はいったい何をすればいいのでしょうか?
ほそぴー or きむきむの日記を探せばどっかに書いてあるのかな?