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だったため、合わせました。
その他
FireFoxでリダイレクト時にうまく行ってなかったのを修正したり、クラス名の統一などの細かい修正です。