JBossでXDoclet

作成 2003/5/23

XDocletにさわってみました。 XDocletのEjbDocletを使って、 EJBコードの自動生成を簡単に行ってみました。

XDocletとは?

XDocletとはJavaのコード生成エンジンです。 JavadocタグにXDocletタグを指定し、 AntのXDocletタスクを使って、 定型作業のJavaソースや設定ファイルを自動生成します。

例えば、セッションビーンの以下のソースから

package sb;

/**
 * @ejb.bean
 *     name="Hello"
 *     type="Stateful"
 *     view-type="remote"
 */
public abstract class HelloBean implements javax.ejb.SessionBean {

    /**
     * @ejb.interface-method
     */
    public String sayHello() {
        System.out.println("hello!");
        return "hello!";
    }

    /**
     * @ejb.create-method
     */
    public void ejbCreate() {
    }
}

以下のモジュールをジェネレートします。

EJB作るとき、毎回同じようなものたくさん作ってるなぁ、 という同じ部分以外をJavadoc部分に記述することで、 すっきり簡単になってますね。

XDolcet Webサイト
http://xdoclet.sourceforge.net/

日本語参考URL
http://www.atmarkit.co.jp/fjava/rensai2/jakarta03/jakarta03.html
http://homepage2.nifty.com/neverbird/obsolete/articles/xdoclet.html
http://on-o.com/~tkyn/wiki/pukiwiki.php?%5B%5Beclipse%A4%C7%B3%AB%C8%AF%2FJ2EE%5D%5D

EJBDocletでEJBを作成してみる

実験環境

XDolcetを利用するには、AntとXDocletが必要です。 XDocletはXDoclet Webサイトからダウンロードします。 ここでは、1.2.0 Beta2を使用しました。 アーカイブを解凍して、適当なディレクトリに配置します。

実験環境にEclipseとJBoss IDEを使っていますが、 EcilpseはAnt Editor(これ便利ね)に使って、 JBoss IDEはJBossの起動とデバッグのランチャーに使っただけなので、 基本的にはIDEに依存していません。

ソースと出力リソース

ディレクトリ構成がうだうだしていますが、 ビルドに必要なソースは、以下の2つです。

+src/
|  +-sb/
|     +- HelloBean.java
+- build.xml

これをEJBDocletすると、targetディレクトリ以下にいろいろ作成されます。

+src/
|  +-sb/
|     +- HelloBean.java
+ target/
|  +- classes/
|  +- meta-inf/
|  |  +- ejb-jar.xml
|  |  +- jboss.xml
|  +- src/
|  |  +- sb/
|  |      +- Hello.java
|  |      +- HelloHome.java
|  |      +- HelloSession.java
|  +- hello.jar
+- build.xml

EjbDocletタスク

HelloBean.javaは最初の説明のところのjavaソースのままです。

build.xmlでは、EjbDoclet拡張タスクを定義します。 必要なクラスパスも指定します。

    <taskdef name="ejbdoclet"
        classname="xdoclet.modules.ejb.EjbDocletTask"
        classpathref="class.path"/>

でもって、ejbdocletタスクを使います。

    <ejbdoclet
        destdir="target/src"
        excludedtags="@version,@author,@todo"
        ejbspec="2.0"
    >

        <fileset dir="src">
            <include name="**/*Bean.java"/>
        </fileset>
        
        <session/>
        <remoteinterface/>
        <homeinterface/>

        <deploymentdescriptor
            destdir="target/meta-inf"
        />

        <jboss
            version="3.0"
            destdir="target/meta-inf"
        />
    
    </ejbdoclet>

詳しいことはよく知りませんが、まあそういう感じです。

実験で使ったソースはjboss2.zipです。 ついでにCMPのサンプルも入ってます。 Eclipseの人は展開してから、インポート→既存プロジェクトをワークスペースへ 、でそのままプロジェクトとして使えます。

感想

コード量85%カットですね。 XDoclet語を新たにおぼえる手間はありますが、いい感じです。 最近のすごいIDE(JBuilderやWASやSunOne Studio)のEJB作成ウィザード に触ってないので、EJBを作るのに何が一番簡単だ?ってのは、 一概に言えませんが、これは確かに簡単です。


BACK TOP