前の記事に続いてSeasar Conferenceをレポートする。
セッション2
- DB-sideのほうは「最新MySQL ア・ラ・カルト」
- Seasar-sideのほうは「今さら人には聞けないDI入門」
- ミニセッションのほうは「S2Axis2」「.NETでもS2Dao - S2Dao.NET」「S2Remoting.NETを使って楽々ClickOnce」「S2Container.PHP5 + S2Base.PHP5デモ」
私はS2Axis2を聞いてきた。発表者はたかのりさん。聞きにきた人はやはりWeb Serviceの開発経験がある人が多かった模様。
S2Axisとは
Aapache AxisをS2ベースで更に使い易くするのがS2Axis。Apache Axis2に対応してS2Axis2を実装中で、Axis2の新機能がいろいろ使えるらしい。例えば、従来の同期通信に加えて一方向通信(実装済み)とか、非同期コールバック(実装中)とか。
- SOAPを使うにはSOAP自体の知識や周辺技術の知識が必要
- でもS2Axisならdiconファイルが書ければOK
- XMLで色々定義してを書いてデプロイして、と何かと面倒
- でもS2AxisならPOJOを書けば良い
- デプロイもdiconに追記するだけ
- スタブコード生成などツールがあるのは良いが、覚えるのが大変
- そんな手間は不要
- セキュリティ関連を考えるのも大変
- S2Axisはデフォルトでセキュリティにも色々配慮してます
ツールはそうだね。開発メンバー全員にツールの使いかたを覚えさせるのは現実的でないので、私はAntタスクで自動化した。でもそのタスクを書く手間だって結構大変だった。「diconにこの1行を書いておいてね」なら開発メンバーに周知可能だね。
Axis2の見どころ
- RPC指向よりはメッセージ指向
- XML Parserの性能向上。DOMやSAXに代わってStAXというのを採用したらしい。
- 同期通信の他に一方向通信や非同期コールバックをサポート
- RESTに対応
S2Axis(2)の使いかた
Serverの実装はPOJO。
- diconファイルにコンポーネントとして登録してmetaタグで「web service提供中」とメタ情報を付加してやればそれだけでmethodを公開可能。
- 勿論、AutoRegisterと組み合わせれば個々のコンポーネントを一々登録する必要もない
Clientの実装も簡単。
- Server側の提供するinterfaceをdiconにコンポーネントとして登録
- そのインタフェースは難でも良い。extends java.rmi.Remoteでなければならないとか、そういう制限もない。
- コンポーネントにRemotingInterceptorをaspectとして指定。
これだけで、登録したコンポーネントをS2Containerから取得すればクライアント側のスタブが手に入る。
- 複雑なデータ構造も、BeanSerializerを自前で定義すればいくらでも対応可能(これはApache Axisの機能)。
- BeanSerializerをWSDDに書いて登録したりする必要は無い。diconに書けば良い
- 一方向通信の呼び出しは裏でdaemon threadを回すので、そちらの処理が終わるまでにプロセスが落ちないように気を付けよう。
Yahoo Web Service 3分クッキング
全部で40行ばかりのコードで、YahooのAPIをさらっと3分で呼び出せたよ。しかも、コードのうち半分はUnitTestね。
感想
Apache Axisは一度使ったけれど、やはり管理が手間だったという記憶がある。確かに自前で実装するのに比べれば遥かに楽ではあるのだけれど、「あと一歩」という感じがあった。S2Axis, S2Axis2はその「あと一歩」を埋めてくれる。そして、S2Containerの機能と組み合わせて幅広い可能性がある。
これだけの基盤があれば、S2ContainerのHot Deployもあるし、S2ActionWebServiceを作れるんじゃないかという気がする。ちょっと、思案中。
コメント