DotCloud + SAStruts+ MySQL (3)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
前回のDotCloudの続きです。
前回はJavaアプリケーションの登録を行いましたが、今回はMySQLとの連携についてです。ここでは前回に引き続きサービス名を「cmapp」、フォルダを「app」として話を進めていきます。
まず、初めにMySQLの登録を行います。前回Javaの設定を行ったのと同様に「dotcloud.yml」を以下のように修正します。

data:
  type: mysql

「dotcloud push cmapp app」と入力します。

これでMySQLが使えるようになります。簡単ですね。現在MySQLのバージョンは5.1.41-3です。
では、MySQLに接するのに必要な情報を表示させます。「dotcloud list」と入力し登録されている一覧を表示させます。ここではcmappというサービスが1つだけあり、その中にjavaとmysqlが登録されているのが分かります。(Javaは前回登録したものになります)

次に「dotcloud info cmapp.data」と入力し、MySQLの情報を取得します。

「dotcloud run cmapp.data -- mysql -uroot -p」と入力します。パスワードを聞かれるので、先ほど取得したパスワードを入力します。

これでMySQLにログインできました。後は通常通りデータベース、テーブルを作成してみてください。次に前回作成したJavaのアプリケーションにMySQLに接続に必要な設定を行います。今回のアプリケーションはS2JDBCを使用しているのでまずはjdbc.diconに必要な設定をします。初期設定ではH2データベースのが有効になっているのでまずこれをコメントアウトしてください。次にMySQLの設定がコメントアウトになっているので有効にし、先ほど取得したURL、ユーザ名、パスワードを設定します。これで接続設定は終わりです。

後はSAStrutsとS2JDBCを使って実装すれば終でわり・・・ではなくこのままではエラーが発生してしまいます。これはTomcatではシステムクラスとして扱ってくれるクラスをJettyでは扱ってくれないのが原因みたいです。※1
そこでjetty-web.xmlという名前で以下のxmlを作成し、プロジェクトのWEB-INF直下に配置します。これでJettyの起動時にxmlファイルに記述したパッケージをシステムクラスとして認識させます。

 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure>
  <Set name="systemClasses">
    <Array type="java.lang.String">
      <Item>java.</Item>
      <Item>javax.</Item>
      <Item>org.mortbay.</Item>
      <Item>org.xml.</Item>
      <Item>org.w3c.</Item>
      <Item>org.apache.commons.logging.</Item>
      <Item>org.apache.</Item>
    </Array>
  </Set>
</Configure>

最後は前回行った手順でwarファイルを作成し、DotCloudにアップすれば完了です。その際、「dotcloud.yml」を以下のように修正します。

 data: type: mysql www: type: java 

以上でDotCloud上でSAStrutsとMySQLの連携は終わりです。これでDotCloud上で本格的なアプリケーションを動作できると思いますのでよかったら試してみてください。

※1 Seasarメーリングリスト