YoshioriのBlog このページをアンテナに追加 RSSフィード

2012-03-22

tomcat7 の Parallel deployment を試してみる

最初に……

同様の機能 jboss にも glassfish にもありますよってことで

「Parallel deployment」は、TomcatにおけるWebアプリケーションバージョン管理機能です

http://www.atmarkit.co.jp/fjava/rensai4/tomcat7_03/01.html#02

とあるのですが、実際どのくらい使えるのか触ってみないとわからないですよねって事で触ってみた。


最初の登録

war ファイルバージョン番号を特定の書式で書いておくとアプリケーションバージョン管理ができます。

appName##version.war

pom には下記のように書いておくと楽ですね。

  <build>
    <finalName>servlet-test##${project.version}</finalName><!-- こんな感じでバージョンを記述 -->
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>

で、tomcatアップロードをすると

こんな感じでバージョンが反映されているのがわかります。

f:id:Yoshiori:20120322231318p:image


実際にアクセス

当たり前だけど普通にアクセスして動きます。

f:id:Yoshiori:20120322231319p:image


新しいバージョンデプロイ

f:id:Yoshiori:20120322231320p:image

こんな感じで複数バージョン共存しています。

f:id:Yoshiori:20120322231321p:image


他のブラウザからアクセス

セッションが共有されないように他のブラウザからアクセスしてみると見事共存して動いていることがわかります

f:id:Yoshiori:20120322231322p:image


古い方のレスポンスが終わる前に古い方を削除してみる

古い方のコネクションが残ってるまま古い方を削除したらどうなるのでしょう?

$ rm -rf servlet-test\#\#1.0.0.war servlet-test\#\#1.0.0/

f:id:Yoshiori:20120322231323p:image

削除完了した後も古い方も動き続けています。

f:id:Yoshiori:20120322231324p:image


無事に終了

f:id:Yoshiori:20120322231325p:image

無事に終了しましたね。


結論

アプリケーションデプロイや削除は manage の画面からやっても

普通にコマンドラインcprm でやっても同じ結果でした。

同じアプリが同時に二個動くのでメモリCPUコストもそうですが、static な値や DB へのコネクションなどが倍になったりする可能性もあるでそこは注意しないとですが、便利ですね!!!

ソース

https://github.com/yoshiori/servlet-test

nekopnekop 2012/03/23 17:11 同様のサーバ内ローリングアップデートみたいな機能はJBossには無いです。この機能の要望は定期的に受けてますがいろいろ余計な問題を生みやすい機能でもあるのであえて提供してません。
mod_jkとかには新規セッションはこのノードへは振らない、という機能があるのでサーバ単位でバージョン分けてサービス無停止ローリングアップグレード自体はできます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Yoshiori/20120322/1332425994