JRebelを使ってJava開発時のサーバの再起動をなくす
JRebelというソフトウェアを使うと、JavaでWebアプリケーションを開発する時に、ソースの修正→サーバ再起動 or 再ディプロイ がいらなくなるよーという話。
ライセンス
商用で使う場合はちゃんとライセンスを購入する必要があるけど、Socialという謎ライセンスだとフリーで使えるみたい。(ちゃんと理解してない)
myJRebel Social is a FREE version of myJRebel that is meant for anyone working on non-commercial projects, who is tired of building and redeploying Java code.
インストール
Eclipseを使っていれば Help -> Eclipse Market Place をクリックして jrebel と検索するとプラグインがインストールできるのでインストールして終わり。再起動すると設定画面が出るので、myJRebelのサイトに登録して、指示通りにSocialのPlanを選択してAtivateするとライセンスコードが表示されるので、それをEclipseの画面でコピペすればOK。
今回試した時の環境
- Mac OS X Lion
- Java 1.7.0_21
- Eclipse 4.2.2 (Juno)
- Maven 3.0.4 (Eclipse内蔵のもの)
- Jetty 8.1.9
- JRebel 5.3
使ってみる
自分はサーバの起動にはMavenのjetty:runを使っているので、その起動の設定画面で下記のようにJRebelタブをクリックして"Enable JRebel Agent"をクリックすればOK。
あとはEclipseで Project -> Build Automatically にチェックが入っているかを確認。これが入っていないとソースを更新してもコンパイルされないのであまり恩恵が受けられない。
この状態でサーバを起動するとConsoleに下記のように表示される。
2013-06-08 12:54:14 JRebel: #############################################################
2013-06-08 12:54:14 JRebel:
2013-06-08 12:54:14 JRebel: JRebel 5.3.0 (201305281348)
2013-06-08 12:54:14 JRebel: (c) Copyright ZeroTurnaround OU, Estonia, Tartu.
2013-06-08 12:54:14 JRebel:
2013-06-08 12:54:14 JRebel: Over the last 1 days JRebel prevented
2013-06-08 12:54:14 JRebel: at least 1 redeploys/restarts saving you about 0 hours.
2013-06-08 12:54:14 JRebel:
2013-06-08 12:54:14 JRebel: This product is licensed to Kazuhiro Oinuma
2013-06-08 12:54:14 JRebel:
2013-06-08 12:54:14 JRebel: License acquired through myJRebel server.
2013-06-08 12:54:14 JRebel:
2013-06-08 12:54:14 JRebel: You are subscribed for the plan "JRebel Social Plan",
2013-06-08 12:54:14 JRebel: subscription is for lifetime.
2013-06-08 12:54:14 JRebel: next license check with the server is required by 2013-06-09.あとは実際にControllerなどのソースコードをいじってみて修正が反映されているかを確認してみよう。自分はこんな感じのコードで model.addAttribute("message", "hello world"); の部分を修正して試してみた。
IndexController
package net.lampetty.samples.spring.mvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping(value = "/")
public String index(Model model) {
model.addAttribute("message", "hello world");
return "/index";
}
}index.ftl
<html>
<head>
<title>index</title>
</head>
<body>
${message!"Default message"}
</body>
</html>Ecipse 3.7 Indigoを使っている場合
どうもEclipse 3.7だとJRebelのプラグインの最新のバージョンがインストール出来ないせいかうまく動かなかったので、Standalone版をインストールしたところうまく動いた。
JRebelのサイトからダウンロードして ~/jrebel に解凍。んで ~/jrebel/bin/jrebel-config.jar をダブルクリックするとライセンスを入力する画面が出てくるのでアクティベートしておく。あとはEclipseから jetty:run でサーバを起動するときのJVMのオプションに ~/jrebel/jrebel.jar のフルパスを書いておくことでちゃんと使えるようになる。
-javaagent:/Users/kazuhiro/jrebel.jar -Xms256m -Xmx512m -XX:MaxPermSize=256m詳しいことは公式ドキュメントを見てもらえればと。
まとめ
JRebel でディプロイする時間を節約してビーチにでも行こうぜ!
- 作者: 竹添直樹,島本多可子,小津美夕紀,亀井隆司
- 出版社/メーカー: 翔泳社
- 発売日: 2011/07/16
- メディア: 大型本
- 購入: 6人 クリック: 217回
- この商品を含むブログ (21件) を見る
関連記事
2013-06-07
2013-03-23