Home > Documentation > 9. サンプル・アプリケーション > 9.3. DayTrader |
DayTrader は株式のオンライン・トレード・システムを基にしたベンチマーク・アプリケーションです。元々は IBM によって開発された Trade Performance Benchmark Sample で、2005年に Apache Geronimo コミュニティに寄贈されました。DayTrader には、ログインやポートフォリオの表示、株価情報の検索、株の売買の機能があります。Mercury LoadRunner や Rational Performance Tester、Apache JMeter といった Web の負荷ツールで DayTrader に現実世界に近い負荷をかけることで、様々なベンダから提供されている Java Platform, Enterprise Edition (Java EE) アプリケーションサーバの性能の計測や比較をすることが出来ます。負荷の測定に加え、DayTrader には Java EE のコンポーネントやデザインパターンの機能や性能のテストに使えるような、基本的な機能が備わっています。
DayTrader は Java EE の中核となる技術によって構成されています。それは、プレゼンテーション層のためのサーブレットや JavaServer Pages(JSP)、バックエンドのビジネス層や永続化層のための Java database connectivity(JDBC)、Java Message Service(JMS)、Enterprise JavaBean(EJB)、Message-Driven Bean(MDB) といった技術です。以下の図は、DayTrader のアーキテクチャの概要を表しています。
プレゼンテーション層は、いくつかのサーブレットと JSP からなり、ほぼ Model-View-Controller (MVC) パターンに沿っています。TradeAppServlet はクライアントからのリクエストを処理する中心的なサーブレットであり、目的のビジネスロジックを呼び出し、適切な JSP に要求を転送します。それ以外のいくつかのサーブレットと JSP は、DayTrader のランタイムオプションの構成やサポート用データベースのメンテナンスに利用します。
ビジネス層と永続化層は、DayTrader の大部分を構成します。TradeServices インターフェースは、業務処理の中心部分を定義します。例えば、register や login、getHoldings、buy、completeOrder、logout などです。DayTrader は3つの異なる実装を提供しており、これらはよく使われる3つの Java EE デザインパターンに対応しています。これらの実装について、以下で説明します。ユーザは、構成用のページで Runtime Mode を変更することで、これらを切り替えられれます。
実装 | 詳細 |
TradeDirect | Pattern: Servlet-to-JDBC |
TradeJDBC | Pattern: Servlet-to-SessionBean-to-JDBC |
TradeBean | Pattern: Servlet-to-SessionBean-to-EntityBean |
ビジネス層のその他のコンポーネントとしては、Java Messaging Service (JMS) があります。DayTrader において、JMS は2つの目的で使われています。非同期での株式の売買と株価の更新処理です。これらの処理について、以下の表で詳細を説明します。
処理 | 詳細 |
非同期の注文処理 | 株の売買の操作が行われる際、クライアント接続から TradeBroker JMS キューに注文の要求が投入されます。TradeBrokerMDB は、キューからメッセージを受信し、売買処理を行います。 |
株価の更新 | 株が売買されると、株価が更新されて、それが JMS のトピックに配信されます。TradeStreamerMDB は価格更新のメッセージを処理しますが、それ以上のことは行いません。DayTrader に含まれている TradeStreamer Java EE クライアントを使うことで、株価の動きをリアルタイムに表示することが出来ます。 |
次の図は、データベースのスキーマとビジネスオブジェクトとの関係を表しています。Container managed relationship (CMR) についても、表されています。
Create diagram and add here
前述のように、DayTrader アプリケーションの主な機能は全て、TradeServices インターフェースで定義されます。これらの機能の詳細を、次の表で説明します。
処理 | 詳細 |
login |
|
logout |
|
buy |
|
sell |
|
getMarketSummary |
|
queueOrder |
|
completeOrder |
|
cancelOrder |
|
orderCompleted | |
getOrders |
|
getClosedOrders |
|
createQuote |
|
getQuote |
|
getAllQuotes |
|
updateQuotePriceVolume |
|
getHoldings |
|
getHolding |
|
getAccountData |
|
getAccountProfileData |
|
updateAccountProfile |
|
register |
|
resetTrade |
|
DayTrader のJSPとサーブレットによるWebインターフェースで、たいていの株取引とポートフォリオ管理用のアプリケーションに備わっている基本的な操作が行えます。それらの操作を契機に、ビジネスロジックと永続化層内の対応する処理が起動されます。次の表は、それぞれのユーザの操作とそれに対する業務処理をまとめたものです。
UIの操作 | ビジネス処理のフロー |
Register 登録 |
|
Login ログイン |
|
View Account アカウントの表示 |
|
View Account Profile アカウントプロファイルの表示 | |
Update Account Profile アカウントプロファイルの更新 |
|
View Portfolio ポートフォリオの表示 |
|
Sell Holding 売却 |
|
View Quotes 株の表示 |
|
Buy Stock 購入 |
|
Logout ログアウト |
|
Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2009, The Apache Software Foundation, Licensed under ASL 2.0. |