*SDLoaderとは
開発およびデモ用に開発されたWebコンテナです。
特徴:
・Jar1つでWebアプリを起動できます。
・コンパクトで複雑なディレクトリ構造が不要なため、アプリケーションに組み込みやすくなっています。
・mainメソッドから、Webコンテナをインスタンス化できます。
・プログラマチックにアプリケーションを追加したり、web.xmlを変更したりできます。
・1つのアプリケーションに対して、ドキュメントルートを複数指定できます。
なお、SDLoaderはServletAPIをフル実装していません。(例えばUserPrincipalなどは未実装です)
*必要な環境
JRE1.5以上
*アーカイブの説明
SDLoaderには、次のアーカイブが用意されています。
libフォルダ以下には、各種SDLoaderのアーカイブが入っています。
lib/sdloader.jar・・・Servlet2.5のServetエンジンのみ。JSPは使用できません。
lib/sdloader-jsp20.jar・・・Servlet2.4+JSP2.0
lib/sdloader-jsp21.jar・・・Servlet2.5+JSP2.1
これらは、開発環境に入れて使う用途が主な目的のアーカイブです。推奨はsdloader-jsp21.jarです。
また、standaloneフォルダ下には、スタンドアロンで動かすためのファイルセットが入っています。
standalone/sdloader・・・Servlet2.5のServetエンジンのみ。JSPは使用できません。
standalone/sdloader-jsp20・・・Servlet2.4+JSP2.0
standalone/sdloader-jsp21・・・Servlet2.5+JSP2.1
各フォルダ下に入っているwebappsフォルダにwarファイルをいれ、batファイルで起動できます。
スタンドアロンの場合、起動後にタスクトレーにアイコンが表示されます。
アイコン右クリックから、shutdownを選ぶと停止します。
libフォルダとスタンドアロンの違いは、swt.jarが入っているかどうかの違いだけ、
基本機能には変わりがありません。
**使用方法
SDLoaderは、大きく分けて「開発利用」と「スタンドアロン利用」の2つの使い方があります。
**開発利用
開発に利用する場合、まずはじめに適当なJavaプロジェクトを作成します。
つぎに、SDLoaderのアーカイブをプロジェクト内におき、クラスパスを通します。
SDLoaderにはJavaEEのAPIが入っているため、クラスパスに通した時点で
JavaEEのAPIが利用できるようになります(つまりHttpServletやHttpServletRequestなどを
使ったコーディングができます)
eclipseの場合、クラスパスに通した後、jarファイルを右クリック->実行->Javaアプリケーションを選択します。
一覧からServlet25ProjectTemplateToolを選ぶと、WEB-INFやweb.xmlなどの雛形、
SDLoader起動のコードの雛形がプロジェクト内に出力されます。
雛形を作らなかった場合は、WEB-INFやweb.xmlを作成したあと、mainメソッドを持ったクラスを作成します。
mainクラスには、SDLoaderを起動するコードを書きます。
最低限必要なコードは、以下のようになります。
public static void main(String[] args){
SDLoader sdLoader = new SDLoader(8080);
WebAppContext webApp = new WebAppContext("/test","WebContent");
sdLoader.addWebAppContext(webApp);
sdLoader.start();
}
SDLoader sdLoader = new SDLoader(8080);
の部分は、Webコンテナのインスタンス化です。
SDLoaderの引数にポート番号を渡すことで、そのポートでSDLoaderを起動します。
SDLoader sdLoader = new SDLoader(true);
のようにして引数にtrueを渡すと、空いているポート番号を探して起動します。(自動ポート検出)
次の
WebAppContext webApp = new WebAppContext("/test","WebContent");
の部分は、デプロイするWebアプリのインスタンス化です。
第一引数は、デプロイするアプリのコンテキストルートです。直接warファイルを指定することも出来ます。
第二引数は、ドキュメントルートディレクトリです。通常はWEB-INFが入っているフォルダを
指定します。
SDLoaderは通常のJavaプログラムとして動くため、ドキュメントルートを探す場合は、起動した
ディレクトリを基点に探します。
eclipseの場合、プロジェクトフォルダが起点になります。
従って、
HogeProject
|-src
|-WebContent
|-WEB-INF
| |-lib
| |-classes
| |
| |-web.xml
|
|-index.jsp
という構成の場合、「HogeProject」が起点になるため、ドキュメントルートとして
"WebContent"を指定します。
作成したwebAppを、
sdLoader.addWebAppContext(webApp);
で、SDLoaderに追加します。
WepAppContextは、複数追加可能です。
最後に、
sdLoader.start();
で、起動します。
起動後はブラウザからアクセスします。
なお、自動ポート検出で起動すると、SDLoaderの起動ポートはログからしか分かりません。
従って、sdLoader.start();のあとに、次のコードを書いておくと便利です。
Broser.open("http://localhost:"+sdloader.getPort()+"/hoge/inde.html");
Browser.openは、引数にURLを入れるとそのURLをブラウザで開きます。上記コードで
アプリの開始画面URLを組み立てて渡すと、起動後にそのポートの開始画面を開くことが出来ます。
**スタンドアロン利用
スタンドアロンの場合は、特に設定する項目はありません。
webapps
lib/sdloader-jspXX.jar
sdloader-jspXX.bat
sdloader-jspXX.exe
のファイル配置にし、batファイルもしくはexeから起動できます。
webapps以下には、
・warファイル
・ディレクトリ
・ROOTディレクトリ
・コンテキストXMLファイル
の4つが配置できます。
warファイルを置くとその場でwarが展開され、warファイル名がコンテキストパスになります。
warファイルを交換したい場合は、展開されたディレクトリを削除してwarファイルを入れ替え、
再起動します。
ディレクトリの場合は、そのディレクトリがコンテキストパスになります。
ディレクトリの名前を「ROOT」とすると特殊フォルダとして扱われ、コンテキストパスが"/"になります。
コンテキストXMLファイルとは、
<Context path="/example" docBase="../../example/webContents"/>
のような形で記述したXMLファイルです。
これを配置すると、そのファイルに従ってコンテキストパスおよびドキュメントルートを設定できます。
pathはコンテキストパスの設定で、docBaseがドキュメントルートになります。
path省略可能で、省略すると、このファイル名がコンテキストパスとなります。
docBaseは、.(ドット)表記からはじめるとwebappsフォルダからの相対パス、それ以外は絶対パスとなります。
なお、どの配置に関しても、WEB-INFおよびweb.xmlがない場合でもエラーにはなりません(警告は出ます)
従って、単純にディレクトリを作成すれば、HTTPサーバとして利用することが出来ます。
댓글 없음:
댓글 쓰기