DotCloud + SAStruts+ MySQL (2)
こんにちは。おおたき2号です。
前回のDotCloud続きです。
前回はDotCloudの設定とHTMLページを表示するまでを書きましたので、 今回はJavaの設定について記述します。
DotCouldのJavaのバージョンは1.6.0.24です。 また、アプリケーションサーバはJettyが使われています。
JettyはGoogle App Engineでも採用されていてWebSocketなどのプロトコルもサポートしています。
しかしDotCould上のJettyのバージョンは6.1.22と少し古いバージョンになっていてWebSocketは未対応になっています(WebSocketの対応はバージョン7から)
またバージョン7からはEclipseプロジェクトになっています。早くバージョンがあがってほしいところです。
ここではEclipseはバージョン3.6.2を使用します(Eclipse及びJavaの設定は省略します)
ではまず、Eclipse上でJettyとSAStrutsを動かすためのプラグインの設定をしたいと思います。
Eclipseのメニュー、「ヘルプ」->「新規ソフトウェアをインストール」を選択します。
操作対象に「http://www.webtide.com/eclipse」と入力します。
「Jetty Server Adaptor」を選択し「次へ」をクリックして、使用条件条項に同意し、インストールします。
次に、SAStrutsのプラグインをインストールします。
Jettyプラグイン同様に「新規ソフトウェアをインストール」から操作対象に「http://eclipse.seasar.org/updates/3.3/」を入力します。
「Dolteng」及び「Kijimuna」を選択し「次へ」をクリックして、使用条件条項に同意し、インストールします。
これで、Eclipseのプラグイン設定は終わりです。
次にJettyをダウンロードします。 こちらから「jetty-6.1.22.zip」ダウンロードしてください。
ダウンロードしたら適当な場所に解凍してください。ここでは「c:\jetty6」に解凍したもとして進めます。
続いて、Eclipseから「ファイル」->「新規」->「その他」から「Dolteng」を選択して「次へ」をクリックします。
プロジェクト名、ルートパッケージ名を入力します。ここではどちらも「cm」としています。
プロジェクト・ファセット設定から以下を設定します。
- 表示:「SAStruts」
- 永続化:「S2JDBC」
- サーバー管理:「WTP(Servlet 2.5)」
「完了」をクリックします。これでSAStrutsのプロジェクトが作成されます。
続いて、Jettyと連携できるようにします。
「ファイル」->「新規」->「その他」から「サーバー」を選択して「次へ」をクリックします。
サーバー一覧から「Jetty 6」を選択して「次へ」をクリックします。
インストールしてあるJRE(JDK)を選択します。
Jettyホームに先ほど解凍したJetty設定し、「次へ」をクリックします。
「次へ」をクリックします。
先ほど作成したプロジェクトを選択して「追加」ボタンをクリックし、構成済みに移動させたら「完了」ボタンをクリックします。
これでJettyとの連携は完了です。
Eclipseの「サーバー」タブからJettyを選択し、右クリックから「開始」を選択すればサーバーが起動します。
(「サーバー」タブが表示されていない場合はメニューの「ウィンドウ->「ビューの表示」->「その他」から「サーバー」を選択してください」)
これで、ブラウザにアクセスをすると「Hello World!」が表示されます。
しかし、NullPointerExceptionが発生してしまいます。
これはSAStrutsのRequestDumpFilterを呼び出しているときに発生しています。
どうやらJettyのバグ( ※1)なようなので、ここではRequestDumpFilterの機能を使わないようにします。
(RequestDumpFilterとはHTTP リクエストを処理する前後で HttpServletRequest の内容をログ出力するためのフィルターです)
そこでweb.xmlに記述してある以下をコメントアウトします。
<filter> <filter-name>requestDumpFilter</filter-name> <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class> </filter>
<filter-mapping> <filter-name>requestDumpFilter</filter-name> <url-pattern>*.do</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping>
これで、Jettyを再起動して確認してみてください。エラーが発生しなくなっているかと思います。
ではJavaプロジェクトをDotCloud上にアップしてみたいと思います。
DotCloudにJavaプロジェクトをアップするのはwarファイルにする必要があります。
今回作成した、プロジェクトを選択し、右クリックから「エクスポート」クリックします。
「Web」フォルダからWARファイルを選択し、「次へ」ボタンをクリックします。
「Webプロジェクト」を選択し、「宛先」に前回作成した「dotcloud.yml」があるフォルダ指定し、完了ボタンをクリックします。
前回作成した「dotcloud.yml」を以下のように修正します。
www: type: java
Cygwinを起動します。
DotCould上にアップする方法は前回のhtmlファイルと同様になります。
しかし同じアプリケーション名で別種類のアプリケーションが登録されている場合、登録しようとするとエラーになっています。
その場合は、別のアプリケーションを新規で作成するか、一度削除してから登録します。
ちなみに無料版のDotCouldではアプリケーションは2つまでしか登録できません。
ここでは前回作成したアプリケーションを削除してから登録します。
「dotcloud destroy cmapp」と入力します。
削除するか聞かれるので、「y」と入力します。これでアプリケーションは削除されました。
次に、アプリケーションを登録します。
「dotcloud push cmapp app」と入力します。
これで今回作成したJavaのプロジェクトがDotCloudに登録されました。
URLは前回登録したhtmlと同じになりますが、JavaアプリケーションなのでURL+コンテキスト名でアクセスします。
コンテキスト名はアップロードしたwarファイル名になります。
次回はMYSQLの設定をしたいと思います。
[参考サイト]