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
© Copyright 2024 ExpyDoc