組み込みGlassfishを使う場合の注意点

以前作ったサンプルのままでも一応動くが、問題が出る。

Glassfish内部のタグライブラリが検出できていないようでJSTL等がそのままでは使えない。

どうやらマニフェストファイルに書かれたクラスパス設定では不具合が出るようだ。Javaコマンド等で直接クラスパスを指定するとちゃんと検出できる。これはGlassfishが悪いのだろうか、それともJava


というわけでバッチファイルを修正してアップしなおしました。そのままだとつまらないのでELの新機能をJSPに記述しています。新しいELの機能を使う人は目を通すとよいでしょう。

内容は以下の通り。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <%
      request.setAttribute("hoge" , "ほげー");
    %>
    <body>
        <h1>Hello World!</h1>
        <p>${hoge.toString()}</p>
        <c:forEach begin="0" end="${hoge.length()-1}" varStatus="status">
            <p>「${hoge.charAt(status.index)}」</p>
        </c:forEach>
    </body>
</html>

もちろん、こんなコード実際に使うわけは無いですが、これはJava EE 5までは通らないELとなっています。もちろんアプリケーションサーバーにはJSTLは標準で入っているのでtaglibも無設定で使えます。



さぁ、安心してみんなGlassfishを組み込もうぜ!ゲームでもロジックにEJBつかおうぜ的な。敵キャラとか1体1体をステートフルセッションビーンで保存しておく超富豪的プログラミングとか。

いや、なんかせっかくサーバーサイドの知識があるんだからDIコンテナとかシーン管理で使えば便利だろうとか思うんだよね。普通にGuiceJava SEで使えといわれそうだけれども。永続化が容易なのでいつでもどこでも中断できて、すぐにその続きから遊べるような仕組みとかあってもいいかなーとか思ったり。それくらいやれないと携帯ゲーム機の手軽さに勝てないっす(あっても勝てないけど)。

今回も以下の箇所においておきます。
http://sites.google.com/site/shin68k/product