JRun は XDoclet と統合できます。XDoclet は、EJB、Web アプリケーション、および JSP タグライブラリのコードおよびデプロイメントディスクリプタを生成するオープンソースのツールです。
XDoclet は、設定ファイルで定義する WebDoclet
タスクの設定を使用して、web.xml ファイルと jrun-web.xml を生成します。サーブレットのコメントを使用して、サーブレットの定義、フィルタ、マッピングなどの設定を作成します。さらに、セッションのパーシスタンス情報や仮想マッピングを定義するデプロイメントディスクリプタにファイルをマージできます。
JRun は、web.xml ファイルに要素を生成する基本的な XDoclet タグ、および jrun-web.xml ファイルに要素を生成する JRun 特有の XDoclet タグをサポートします。
XDoclet は Apache の Ant を使用しているため、その設定ファイルは build.xml ファイルに似ています。XDoclet の設定ファイルは、<JRun のルートディレクトリ>/lib/xdoclet.xml です。
詳細については、XDoclet の Web サイト (http://sourceforge.net/projects/xdoclet/) をご覧ください。
XDoclet は、jrun.xml ファイルの XDocletService セクションを使用して有効にします。
XDocletService
セクション内の warSourceFiles
属性がサポートしている命名規則を使用してそのサーブレットに名前を付けるか、または、サーブレットのファイル名に一致する warSourceFiles
属性を追加します。デフォルトの命名規則は次のとおりです。
*Servlet.java
*Tag.java
*Filter.java
これらのデフォルトの命名規則はすべてのサーブレットに適用され、名前は Servlet、Tag、または Filter で終わり、拡張子 .java が付きます。
XDocletService
セクションの watchedWARDirectory
属性を追加して、ディレクトリ内のすべてのファイルに対する XDoclet サポートを有効にします。デフォルトのディレクトリは次のとおりです。
<JRun のルートディレクトリ>/default-ear/default-war ディレクトリ
このディレクトリは、デフォルトではコメントとして処理されます。XDoclet が watchedWARDirectory
属性を監視できるようにするには、この属性のコメントを解除する必要があります。補足ディレクトリを追加して、JRun が監視できるようにすることもできます。
JRun は、Web アプリケーションのデプロイメントディスクリプタにサーブレットのエントリを生成します。
XDoclet リソースは <JRun のルートディレクトリ>/lib/xdoclet.xml で設定します。また、XDoclet を JRun サブタスクのビルドの一部として割り当てることができます。JRun サブタスクは、xdoclet.xml ファイルに <jrunwebxml/>
として表されます。次の表は、<jrunwebxml/>
サブタスクの属性をリストしたものです。
<jrunwebxml/>
タスクの例については、 「XDoclet を使用した EJB の例」 を参照してください。
デプロイメントディスクリプタの構築時に XDoclet で使用するマージファイルを定義できます。これらの外部マージファイルで、セッションのパーシスタンス情報や仮想マッピングなどの設定を定義できます。これらのマージファイル名は session-config.xml および virtual-mapping.xml で、格納場所は XDoclet の設定ファイルで定義できます。
サーブレットクラスファイル内で jrun.xml 属性と JavaDoc スタイルのコメントを組み合わせて使用すると、XDoclet が実行する処理を制御できます。このセクションでは、XDoclet で使用するソースコードの標準的な XDoclet タグと JRun 特有のタグについて説明します。
XDoclet タグは、基本的に @jsp:
または @web:
という接頭辞で始まります。これらのタグは、基本的な XDoclet のアーキテクチャの一部です。これらのタグをソースファイルで使用する場合、XDoclet がこれらを使用して Web アプリケーションの web.xml ファイルにエントリを作成します。
次の表で、Web アプリケーションコンポーネントで使用する標準的なXDoclet タグを説明します。
タグおよびそのパラメータの全リストを含む詳細については、XDoclet の Web サイト
http://xdoclet.sourceforge.net/ を参照してください。
JRun 特有の XDoclet タグは、@jrun:
という接頭辞で始まります。これらのタグをソースファイルで使用する場合、XDoclet がこれらを使用して jrun-web.xml ファイルにエントリを作成します。これらのタグは、すべてクラスレベルのタグです。次の表は、JRun 特有の XDoclet タグをリストします。
JRun 特有の XDoclet タグの詳細については、ドキュメンテーションのホームページで利用できるオンラインディスクリプタドキュメントを参照してください。XDoclet を使用するオンラインの EJB の例については、samples JRun サーバを参照してください。
このセクションでは、XDoclet タグを使用する Java ソースファイルと xdoclet.xml 設定ファイルの Java ソースファイルについて説明します。
次の例で示されている単純なサーブレットは、XDoclet を使用してサーブレットの url-pattern
マッピングおよび初期化パラメータを定義します。
import javax.servlet.http.*;
import javax.servlet.*; import java.io.*;
/**
* A hello world. * * @web:servlet name="SimpleServlet" display-name="Simple Servlet" load-on-startup="1" * @web:servlet-init-param name="param1" value="value1" * @web:servlet-init-param name="param2" value="value2" * @web:servlet-mapping url-pattern="/hellaworld/*" * * @author Macromedia * @created Mar 14, 2002 * @version $1.0 $ **/
public class SimpleServlet extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { PrintWriter out = response.getWriter() out.println("Hella World"); } }
次の例で示されているフィルタサーブレットは、XDoclet を使用してフィルタの定義、すべての XML ファイルへのフィルタのマッピング、およびフィルタの初期化パラメータの定義を行います。
import javax.servlet.*;
import javax.servlet.http.*; import java.util.*; /** * xdoclet を使用して web.xml へのフィルタ追加をテストします。 * * @web:filter name="XDocletFilter" display-name="XDoclet Test Filter" * @web:filter-init-param name="param1" value="value1" * @web:filter-init-param name="param2" value="value2" * @web:filter-mapping url-pattern="/*.xml" * * @author Macromedia * @created Mar 14, 2002 * @version $1.0 $ **/ public class XDocletFilter extends GenericFilter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws java.io.IOException, javax.servlet.ServletException { chain.doFilter(req, resp); } }
次の例では、xdoclet.xml ファイルの WebDoclet
タスクを定義します。
<webdoclet
sourcepath="${xdoclet.working.dir}" destdir="${xdoclet.working.dir}" classpathref="project.class.path"> <!-- Struts サポートのインクルード--> <fileset dir="${xdoclet.working.dir}"> <include name="**/*Servlet.java" /> <include name="**/*Filter.java" /> <include name="**/*Tag.java" /> <include name="**/*Action.java" /> </fileset> <deploymentdescriptor servletspec="2.3" destdir="${war.meta.dir}" /> <jsptaglib jspversion="1.2" destdir="${war.meta.dir}/tlds" shortname="j2ee" /> <jrunwebxml destdir="${war.meta.dir}" contextRoot="webapp" reload="true" compile="true" loadSystemClassesFirst="false" /> </webdoclet>