Staxクラウド上のWebアプリケーションを修正する

前回は「Stax Networks」のアプリケーションコンソールを用いてWebアプリケーションの雛型を作成する方法を解説した。今回はこれを修正して再度デプロイする方法を紹介する。その前に、Stax SDKのバージョン0.2.17が公開されているので、ここよりダウンロードして前回紹介したのと同様の手順でインストールしておこう。

作成したWebアプリケーション(本稿の例ではMyFirstApp)のアプリケーションコンソールにアクセスすると、図1のようにソースコードをダウンロードするためのボタンまたはリンクが用意されている。これをクリックすればソースコードや設定ファイル、ライブラリ、リソースなどをまとめてzip形式でダウンロードすることができる。

図1 作成したWebアプリケーションのソースをダウンロードする

図2 [Download now]をクリックすればダウンロードが開始される

ダウンロードしたファイル群は.projectや.classpathなどを含むEclipseのプロジェクト形式になっているので、そのままEclipseにインポートすることが可能だ。インポートする際にzipファイルを展開する必要はない。図3のようにワークスペースにコピーして開くことができるので、通常のプロジェクトと同様に編集すればよい。

図3 Staxで作ったWebアプリケーションはそのままEclipseにインポートできる

今回はテンプレートとして「ServletとJSP」を選んだので、シンプルなServletアプリケーションになっているはずだ。ソースコードを見ると、example.HelloServletというクラスがHttpServletを継承しており、webappディレクトリにあるindex.jspにはこのServletを呼ぶためのリンクが記述されていることがわかる。ここではHelloServlet.javaを書き換えて、リスト1のように表示する内容を少しだけ変更してみた。修正後のコンパイルまではEclipseで行うことができる。

リスト1

package example;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        public void doGet(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {

                resp.setContentType("text/html; charset=UTF-8");
                PrintWriter writer = resp.getWriter();

        writer.println("<html lang='ja'>");
        writer.println("<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'></head>");
        writer.println("<body>");

        writer.println("<h1>攻略! Stax Networks</h1>");

            writer.println("</body></html>");
    }
}

コンパイルに成功したら、クラウド上にデプロイするまえにローカルでテストしてみる。Stax SDKにはクラウド上に用意されているものと同じ実行環境が付属しているので、これを用いて修正したウェブアプリケーションを実行すればよい。Stax SDKのコンソールを開いてEclipseのワークスペースにある該当のプロジェクトフォルダ(たとえばC:\workspace\myfirstapp)に移動し、そこで次のようなコマンドを実行する。

プロンプト1

C:\workspace\myfirstapp> stax run

このコマンドでTomcatが起動し、その上でMyFirstAppが実行される。デフォルトでは8080ポートが使われるので、Webブラウザからhttp://localhost:8080/にアクセスすれば図4のように表示され、「Click here to see a Servlet」のリンクをクリックすれば図5のようにソースコード修正後のメッセージが表示されて変更が反映されていることがわかる。

図4 修正したアプリケーションをローカル環境でテスト

図5 Servletに修正が反映されていることがわかる

修正したWebアプリケーションを再度クラウド上にデプロイするには、Stax SDKのコンソールで以下のコマンドを実行する。[ユーザ名]、[パスワード]の部分には自分のユーザ名とパスワードを指定する。「Deploy complete,」と出て、レスポンスのXMLが表示されればデプロイ完了だ。

プロンプト2

C:\workspace\myfirstapp> stax deploy -u [ユーザ名] -p [パスワード]

すべての作業をStax SDKのコマンドで行いたい場合

ここまでの例では、Webアプリケーションの雛型の作成からダウンロードまではStaxに用意されたアプリケーションコンソールを用いて行った。これらの作業をStax SDKのコマンドを使って行うこともできる。まずテンプレートを利用した雛型を作成するには次のコマンドを実行する。ただし、このコマンドで雛型を作成してもstax deployコマンドを実行するまでのクラウド上にはデプロイされない。

プロンプト3

C:\> stax create -t [テンプレート名] [アプリケーション名]

[テンプレート名]の部分に指定できるテンプレートの名前は次のようになっている。このうちgrailsとrailoのテンプレートはStax SDKでのみサポートされており、アプリケーションコンソールでは利用することができない。

  • simple - ServletとJSP
  • struts - Apache Struts
  • wicket - Apache Wicket
  • jrubyonrails - JRuby on Rails
  • jython - Jython
  • gwt - GWT(Google Web Toolkit)
  • flex - Adobe FlexとBlazeDS
  • coldfusion-core - Adobe ColdFusion 8
  • grails - Grails(Groovy向けのRailsライクなフレームワーク)
  • railo - Railo(オープンソースのCFMLエンジン)

例えば今回例に挙げた「MyFirstApp」と同じものを作成する場合には次のように実行すればよい。

プロンプト4

C:\> stax create -t simple MyFirstApp

修正したソースコードをEclipseを使わずにStax SDKでコンパイルするには次のコマンドを使用する。

プロンプト5

C:\MyFirstApp> stax compile

一度デプロイしたソースコードをダウンロードするには次のコマンドを実行する。

プロンプト6

C:\> stax getapp -u [ユーザ名] -p [パスワード] -a [ユーザ名]/[アプリケーション名] -d [ディレクトリ名]

-aオプションで指定しているのはアプリケーションIDで、通常はこの例のようにユーザ名とアプリケーション名を/(スラッシュ)でつないだ文字列がアプリケーションIDとなる。[ディレクトリ名]にはダウンロードしたファイル群を格納するディレクトリを指定する。

Stax SDKには上記のほかに、ヘルプを表示する「stax help」、アプリケーションをパッケージ化する「stax package」、構築物を削除する「stax clean」などのコマンドが用意されている。より詳しくは「stax help」コマンドで表示されるヘルプを参照していただきたい。