私自身あまり詳しくないのですが、SalesForce CRMにはオフライン機能があって、ネットワークに接続できない環境下でも顧客情報を確認したりできるとかなんとか。
html5の勉強会とかでもWeb Storageというのがあって、情報をローカルに保存できて~なんて話もあって、ネットワークがない環境下でもWebシステムを使いたいケースというのはあるのかな、と。
というか実際そういう要件があって、ネットワークに接続していない環境でもJava EE6で構築したシステムを利用するという話があったりなかったり……(^^;
最初から意識して作ってたわけではないので、うーむ…と頭を抱えそうだったのですが、そういえば昔、組込みGlassFishなるものがあるとか聞いたような…。
ってか、テストフレームワークのArqullianで使ってるし( ̄□ ̄;!
というわけで、調べてみたら日本語の情報が既にたくさんありました。おおー。
しんさんの出張所 はてな編 @shinsan68kさんのブログ
裏紙 @backpaper0さんのブログとスライド
その他にも
本家(Oracle)
日本語たくさんで頼もしい!
というわけで、完全に後追いレベルですが、自分も簡単なサンプル作ってみました。
NetBeansでMavenのJava SEプロジェクトを作成して、pom.xmlにEmbedded GlassFishの依存性を記述してビルドします。
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2.2</version>
</dependency>
あとはMainで
package jp.co.hoge.embeddedglassfishsample;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.glassfish.embeddable.Deployer;
import org.glassfish.embeddable.GlassFish;
import org.glassfish.embeddable.GlassFishException;
import org.glassfish.embeddable.GlassFishProperties;
import org.glassfish.embeddable.GlassFishRuntime;
public class App
{
public static void main( String[] args )
{
try {
GlassFishProperties gfPropes = new GlassFishProperties();
gfPropes.setPort("http-listener", 8000);
final GlassFish glassFish = GlassFishRuntime.bootstrap().newGlassFish(gfPropes);
glassFish.start();
File war = new File("C:\\Users\\kikutaro\\Documents\\NetBeansProjects\\EmbeddedGlassfishWeb\\dist\\EmbeddedGlassfishWeb.war");
Deployer deploy = glassFish.getDeployer();
deploy.deploy(war, "--name=EmbeddedGlassfishWeb", "--contextroot=EmbeddedGlassfishWeb", "--force=true");
glassFish.stop();
glassFish.dispose();
} catch (GlassFishException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
stopで止めたあとなら、startで再度起動できるみたいです(disposeするとstartで再起動はできない)
デプロイしたwarはJava EE6で作ったJSFのビューだけ持つwarです(^^;
とりあえずNetBeansのデバッグモードで起動して、stopの所にブレイクポイントを置きました。
で、ブラウザを起動して、httpでlocalhostの8000にアクセスして、contextrootで指定した名前を打ちます。
おお、でた!
ボタン押してJavaScript実行されるだけのサンプルです(^^;
これベースに組込みDBを使ったりして検証していけば、インストール形式でユーザの環境を色々汚したりすることなくオフライン機能が実現できるんじゃなかろうかな…と淡い期待;
色々検証しないと。。。