読者です 読者をやめる 読者になる 読者になる

v0_1_14リリース

http://code.google.com/p/sdloader/

v0_1_14をリリースしました。
また、スタンドアロン風のSDLoaderDesktopSWTもアップしました。SDLoaderDesktopSWT_v0_0_04が最新です。

案件で欲しいと思った機能を入れてみました。追加機能は以下の通りです。

複数ドキュメントルートサポート

ドキュメントルートを複数出来るようにしました。JEEの規格からはがっつり逸脱しますが、完全に開発用です。
例えばFlex開発でサーバ連携を伴う場合は、eclipseのプロジェクト構成がだいたい

A.
-FlexJavaProject
  -srcjava
  -srcflex
  -bin-debug
  -WebContent
     |-WEB-INF

もしくは

B.
-FlexProject
  -srcflex
  -bin-debug

-JavaProject
  -srcjava
  -WebContent
     |-WEB-INF

のような感じになります。
この場合、ビルドしたswfがWebContentなどのドキュメントルートに入ってくれると便利ですが、ビルド先をWebContentにすると、WEB-INFが消えるなど悲惨な目に会います。
Flexには出力フォルダURLという設定もあるようです、滅法うまく動きません(私の設定が悪いのかもしれませんが)。ということで、この機能を入れました。
Aの場合は

public class ServerStart {
  public static void main(String[] args) {    
    SDLoader loader = new SDLoader(8080);
    loader.addWebAppContext(new WebAppContext("/flexapp","bin-debug","WebContent"));
    loader.start();
  }
}

Bの場合は

public class ServerStart {
  public static void main(String[] args) {    
    SDLoader loader = new SDLoader(8080);
    loader.addWebAppContext(new WebAppContext("/flexapp","../FlexProject/bin-debug","WebContent"));
    loader.start();
  }
}

のようなクラスを用意しておけば、Flexのビルドフォルダもドキュメントルートとして取り扱ってくれます。
なお、WEB-INF/classes及びWEB-INF/libもドキュメントルート分チェックして登録しているので、複数箇所に分散したクラスやjarを使ったりもできるはずです。
(web.xmlだけは最初に見つけたものを使います)

NoCache機能

sdloader.setUseNoCacheMode(true);

とすると、すべてのレスポンスに対して無差別にNo-Cacheヘッダーを付けます。
ServletFilterでももちろん良かったのですが、開発用に便利と思い、コンテナに付けてみました。
Flex開発やアプレット開発に便利です。

URIEncoding指定

日本語URLがうまく解釈できなかったので、修正しました。

sdloader.setURIEncoding("UTF-8");

とすると、URLをデコードする時に、セットしたエンコードを使用してデコードします。
ほんとはUTF-8をデフォルトにしたかったのですが、Tomcat先生がデフォルトISO-8859-1だったため、合わせました。

Browser

Browser.open()をMacでも動作するように修正しました。(Mac OS X 10.5で確認)

その他

FireFoxでリダイレクト時にうまく行ってなかったのを修正したり、クラス名の統一などの細かい修正です。