STS(SpringSource Tool Suite)を使ったCloud Foundryの開発

先日、Cloud Foundry(VMWareのPaaS)をSTSで使ってみるというブログを書きましたが、 まとまった時間が出来たのでもうちょい進めてみる事にしました。   【今回やろうと思ったこと】 ・MySQLで普通のWebアプリ ・都度MySQLでJOINとかしてると重そうなのでキャッシュ的にRedisを使う   【結論から言うと】 それ以前のところでつまずいてしまい、じぇんじぇん出来ませんでした…。   以下、ツラツラ書いてみます。 #的外れな事してたかも知れないので、何かお気づきの方はお気軽に #お声がけいただけるとありがたいです。

 

■ デプロイ(Publishing)

以下のような感じで "Automatically publish when resources change" にしています。 何か変更を加えた時に↓のServersのところをみると、 ステータスが、Republish→Shyncronizedという形になって、イイ感じに見えるのですが、 いくら待っても、画面を再描画しても、変更が反映されず、何か変更を加えるたびにサーバーを再起動させました。 コレは日常使いするにおいては非常に重要な事で、ホットデプロイが使えるからSeasarみたいな ノリだった事もあり、いろいろググってみましたが、コレっていうのは出てきませんでした。 ↓のようにcleanしてrepublishしてもダメでした。。  

 

■ ログのトレースやサーバに上がっているファイルの確認

↓のRemote Systemsというところで、Tomcatの中までガツガツ入ってファイルが 狙った通り配置されてるか確認出来る時と出来ない時があります。。 ダメな時は何度Refreshしてもダメで、見える時も明らかにJSPの内容が古かったりしました。 (JavaコードにコンパイルされたJSPは変更内容がトレース出来るのですが…) また、logsディレクトリのstdout.logも情報が最新でなく、Refreshしてpending時間にモンモンとしながら、 見れたと思ったら、結局ソレかい的な…w   Log4j.xmlはデフォルトではConsoleAppenderでSystem.outに出力するようになっていますが、 ↓のInstancesのところで該当ホストを右クリックしてやるとShow Consoleってのが出てくるので、 それでトレースしていました。(コレを発見するにもチョイチョイ時間かかったなぁ…)  

 

DDLの流しこみ

実際に開発プロジェクトで使うとなったら、頻繁にDDLの変更が入ってきたりするし、 その時に入ってるテストデータとかって手軽に取っておいたりしたいものです。 で、STSを使ってどうやってDDL流すのかな、、と思ったら、いくらApplication Servicesのところを 右クリックとかしたところでなんとも出来ません。。 って事で仕方なく↓のようなコードを書いてオリャっと…。 #ググってくとwar+ddlで〜とかってのを見かけたんですが、ソレはどうやったら良いのでしょうか… コレはコレで無事に流れたようなのですが、さすがに普通のWebアプリケーションで そんな権限与えたくありません。。 この辺のDBの権限管理とかは外のパブリックなクラウドってどうしてるのかなぁとか思うところでもあります。   Railsのmigrateとかアツいなぁと思ってる自分にとっては、そういったソリューションが全くないってのは ちょっと痛いかなぁと。。  

 

MySQLとRedisに接続

文句ばかり書いててもアレなので、最後にもし誰かの参考になれば的なのを。   何となくMySQLやRedisにアクセスするのに、サービスが登録されてるから、 ソレを取ってくる〜ってイメージはあったのですが、実際には、 servlet-context.xml↓の設定を入れて実現出来ました。

xmlns:cloud="http://schema.cloudfoundry.org/spring" ★cloudという名前空間
xsi:schemaLocation=" ★ cloudのスキーマ定義
 〜略〜
 http://schema.cloudfoundry.org/spring http://schema.cloudfoundry.org/spring/cloudfoundry-spring-0.6.xsd"
〜略〜
<cloud:data-source id="dataSource" /> ※
<cloud:redis-connection-factory id="redisConnectionFactory" /> ※

コレでイイんだから楽チンですよねぇ。 ※ ググってたらid=って要らなさそうだったんですが、スキーマ定義違反だみたいなメッセージが出たので。   ↓GithubにあったSampleをお手本にして、 MySQLとRedisの接続情報を画面に出してみました。 # rkaraageは今回の開発合宿用のハッシュダグですw # 合宿の会場は一年半前(もうそんな経つのか><)にもお世話になった # @rainydragonのご実家ですmm     ってことで普通にSpringでやってくとあまり楽出来なさそうな気がするので、 SpringRooで遊んでみようかなぁ。。 # やっぱりRailsがイイなぁとか…    

 

Effective Java 第2版 (The Java Series)
Joshua Bloch
ピアソンエデュケーション
売り上げランキング: 2777