• 検索結果がありません。

设计のポイント

第 4 章 担当機能の開発

4.3 仮想マシンの制御機能

4.3.4 设计のポイント

35

図4-17 仮想マシン制御機能の分析クラス図

Controller 部分では、クライアントからの要求に対するアクション(Action)を定義した。ア

クションは ActionServlet を継承し、 クライアントからの要求を受け取ると、リクエストデータ

をActionFormBeanに格納し、アクションを呼び出す。アクションは、アクションフォームビーン

に格納されたデータを元にビジネスロジック(Model)を実行し、画面表示(View)を呼び出す。

Model部分では、データにアクセスするオブジェクトであるDAO(Data Access Object)

を定義し、データベースのテーブルごとに一つクラスとした。これは、データベース側の変 更に合わせたプログラムの変更を局所化するためである。データベースとクラスが1対1で 対応しているため、テーブルを変更した場合に、変更しなければならないクラスが自動的に 決まる。各クラスの中には、テーブルを表すメソッド以外に、データベースへの操作を行う メソッドを定義した。このメソッドは、データベースの接続、切断、問い合わせ実行、コミ ット、ロールバックなどを役割し、共通部分を抽出した形になっている。

 Kumoiとのやり取り

前述により、専用の ServletがShell のライブラリを利用し、VMの起動・停止などを行 うことになっている。専用のServlet がどのようにShell のライブラリを利用するかと考え

ると、Controller 部分でKumoiとのやり取りための専用クラスKumoiControllerを定義し

た。このクラスにいくつかメソッドが定義される。これらのメソッドは Kumoi のライブラ リを呼び出し、Kumoiにログイン、ログアウト、またはVMの起動、停止などそれぞれKumoi に関する操作を実現する。3.3節に記述した課題と解決策で、本プロジェクトは極力Kumoi に依存しない形で開発するということが要求されている。この方針によって、クラス

KumoiControllerを定義した。今後、Kumoiではなく、別のクラウド環境に対応と要求され

る場合、本機能に関する部分の修正はほとんどしなく、クラスKumoiControllerに対応する だけである。

 PHPとのやり取り

前述により、第2イテレーションで開発したWebインターフェースはPHPで開発され、VM 制御機能は付属機能としてScala専用のServletを開発している。ユーザはPHP側でログイン させるようにして、ログインが1度で済むようになっている。VM操作機能を利用したい場合、

メニュー画面で、「VMを操作する」のリンクを押すと、VM操作画面(図4-9)が表示される。

この過程に進む条件の一つとして、ユーザに対するOpenIDが必要になっている。したがって、

異なるWebサービス(PHPとServlet)の間で、どのようにデータ(OpenIDなど)を転送す るかを検討した。その結果、安全性が保たれるような解決案が出た。

処理の流れを図4-18に示す。データベースで、frontend_sessionsという名のテーブル(フ ィールド:SessionID、 OpenID)を定義した。PHP側がリンクを押してVM操作機能にサ クセスする際に、該当ユーザに対するOpenID、SessionIDをテーブルfrontend_sessionsに保 存する。同時、SessionIDをユーザ側のCookieに保存する。Servlet側がアクセス要求を受け 次第、Cookieを読み、そのSessionIDを取得する。また、テーブルfrontend_sessionsにアク セスし、取得したSessionIDによって該当のOpenIDを取得する。最後、テーブル

frontend_sessionsから使った記録を削除する。以上の方法を利用し、大切なデータOpenID を安全に転送できるように実現した。

図4-18 PHPとServlet間のデータ(OpenID)交換の処理

37

関連したドキュメント