mini_s2jms

Seasar Conference 2006 Spring
ミニセッション (J-1)
S2JMS
koichik&こもり&ぼうず&むらた
2006.5.14
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
1
S2JMSとは?
• S2JMSとは?
– S2JMS は非同期メッセージを送受信するアプリケーショ
ンを構築するためのコンポーネント群を提供。
• S2JMS Committers
– koichik
• http://d.hatena.ne.jp/koichik/
– こもり
• http://d.hatena.ne.jp/y-komori/
– ぼうず
• http://d.hatena.ne.jp/bowez/
– むらた
• http://d.hatena.ne.jp/KenichiroMurata/
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
2
S2JMSの構成
• S2JMSの構成
– S2JMS-Core
• JMS API を直接使用することなく非同期メッセージを送受信
するための、S2 コンテナで構成可能なコンポーネントを提供。
– S2JMS-Container
• 非同期メッセージを受信してアプリケーションコンポーネント
を呼び出すためのコンテナを提供。
• EJB における Message-Driven Bean (MDB) コンテナに似
ているが、MDB と異なり受信アプリケーションは
javax.jms.MessageListener インタフェースを実装したり、
javax.jms.Message クラスを使用する必要がない。
– S2JMS-Server
• S2JMS-Container を使用した非同期メッセージ受信アプリ
ケーションを起動するためのブートストラップクラスを実行可
能 Jar として提供。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
3
S2JMS-ActiveMQ-Blankプロジェクト
• S2JMSが提供するBlankプロジェクト
– S2JMS-ActiveMQ-Blank-Server
• JMS 実装として ActiveMQ を使用したスタンドアロンアプリ
ケーションのひな形となる Eclipse プロジェクト。
• 今回用意したデモでは、メッセージを受信して動作するアプリ
ケーションを作成するために利用。
– S2JMS-ActiveMQ-Blank-JSF
• JMS 実装として ActiveMQ を使用した JSF アプリケーション
のひな形となる Eclipse プロジェクト。
• 今回用意したデモでは、 Webアプリケーションからメッセージ
を送信するWebアプリケーションを作成するために利用。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
4
デモの概要
• 今回お見せするデモの概要
– s2buri-exampleのガス料金システムと銀行システムを
S2JMSを使って連携する。
• 想定シナリオ
– ガス料金システムは既にカットオーバーしており、現在稼
動中。
– 銀行システムも既に稼動中。
– 現在はお客様が銀行にガス料金を振り込むと、その通知
が銀行からガス会社に届き、職員がガス料金システムか
ら手で入力している。
– お客様が銀行システムを利用してガス料金の振り込むと、
システム連携して、ガス料金システムにもその振り込みが
反映されるようにしたい。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
5
システム構成
振り込み
入金の通知
ガス
システム
S2JMS
銀行
システム
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
6
ガス料金システムの変更
• JMSによりメッセージを受信し、入金処理を行う
– 既存の仕組みでは、Webからの入力を受けて、入金処理を行ってい
る。
– 入金データさえ受け取れば、後の処理は従来の機能をそのまま使え
る。
• 拡張ポイント
– WebコンテナからHttpRequestを受けて入金処理を行うのは
PaymentActionImplクラス。
– PaymentActionImpl に習い、新たにJMSサーバからメッセージを受
信して入金処理を行うPaymentActionJmsImplクラスを作成する。
– Action以降の処理(Baoの処理)は全く変更しない。
– S2JMS-ActiveMQ-Blank-Serverを利用し、スタンドアローンアプリ
ケーションとする。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
7
銀行システムの変更
• 振り込みを受けて、JMSによりメッセージを送信する
– 既存の仕組みでは、Webからの入力を受けて、振り込み処理を行っ
ている。
– 振り込み処理はそのまま行い、処理の最後に非同期メッセージを送
信する。
• 拡張ポイント
– 処理の最後にMessageSenderを利用して、非同期メッセージを送信
する。
– アプリケーションによっては、ReturnValueSendMessageInterceptorを
利用して、Java ソースに変更を加えないことも可能。
– JSFアプリケーションのため、S2JMS-ActiveMQ-Blank-JSFを利用す
る。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
8
デモの実演
細かい所はいろいろありますが、
まずは実際に動くものを見てください。
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
9
S2JMSTestCase / Message Sender
• S2JMSアプリケーションのUnitテスト
– S2JMSTestCase
– MessageSender
MessageSenderにより
javax.jms.Message クラスを
使う必要がない!
send(String arg0) なら TextMessage
send(Serializable arg0) なら ObjectMessage
send(byte[] arg0) なら BytesMessage
send(Map<Sting, Object> arg0) なら MapMessage
をそれぞれ送出。
Map<String, Object> msg = new HashMap<String, Object>();
msg.put("billCode", "9888");
msg.put("paymentAmount", 5000);
sender.send(msg);
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
10
ArrowVisionによるシーケンス
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
11
ありがとうございました。
http://s2jms.sandbox.seasar.org/ja/
Copyright© 2004-2006, The Seasar Foundation and the others. All rights reserved.
12