XDoclet
Javadoc に XDoclet タグを記述することで、 Ant タスクとして XDoclet タグを処理し、さまざまなファイルを生成することができます。 Java で属性指向プログラミングを可能にします。
EJB の作成は、インターフェイス、実装、設定ファイルと、様々なファイルを作成し、それらの同期をとる必要があります。この非常に面倒な作業を簡略化することができます。具体的には、 EJB の実装に XDoclet タグを記述することで、インターフェイスのソースコードの生成、 ejb-jar.xml 設定ファイルの生成、及びアプリケーション サーバ固有の設定ファイルの生成を行うことができます。
ここでは、 Maven で EJBDoclet を使用するサンプルを示します。とはいえ、基本的には Ant で EJBDoclet を使用する方法と同じです。
EJB の実装を xdoclet タグ付きで作成します。 SessionBean だと、例えば以下のようになります。
タグについては XDoclet: @ejb Tag Reference を参照してください。
XDoclet を使用した EJB の実装では、インターフェイスを作成する必要はなく、ただ、 XDoclet タグ付きの実装を作成すれば良いだけです。
Ant の場合はビルド プロセスに EJBDoclet タスクを追加することになりますが、 Maven の場合も同様です。ただ、 Maven 的にはゴールにしてしまった方が良いようですが。
以上のように、 EJBDoclet タスクを呼び出すゴールを作成します。タグについては XDoclet: Ant Task Reference: ejbdoclet を参照してください。これを java:compile ゴールが走る前に走らせます。
これで、 Java ソースコードがコンパイルされる直前で EJBDoclet により各種ソースコード、及び ejb-jar.xml や各アプリケーション サーバ用の設定ファイルなどが生成されるようになります。
EJBDoclet
EJB の作成は、インターフェイス、実装、設定ファイルと、様々なファイルを作成し、それらの同期をとる必要があります。この非常に面倒な作業を簡略化することができます。具体的には、 EJB の実装に XDoclet タグを記述することで、インターフェイスのソースコードの生成、 ejb-jar.xml 設定ファイルの生成、及びアプリケーション サーバ固有の設定ファイルの生成を行うことができます。
ここでは、 Maven で EJBDoclet を使用するサンプルを示します。とはいえ、基本的には Ant で EJBDoclet を使用する方法と同じです。
EJB の実装
EJB の実装を xdoclet タグ付きで作成します。 SessionBean だと、例えば以下のようになります。
package jp.gr.java_conf.uguu.helloejb;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* @ejb.bean
* description="EJB の練習です。"
* name="HelloService"
* type="Stateless"
* view-type="both"
* jndi-name="ejb/jp/gr/java_conf/uguu/helloejb/HelloService/Remote"
* local-jndi-name="ejb/jp/gr/java_conf/uguu/helloejb/HelloService/Local"
* @ejb.permission
* role-name="admin,user"
* @ejb.transaction
* type="Required"
*/
public class HelloServiceBean implements SessionBean {
/**
* @ejb.interface-method
* @ejb.transaction
* type="Required"
* @ejb.permission role-name="admin,user"
*/
public String sayHello() {
return "hello";
}
public void setSessionContext(SessionContext ctx) {
}
public void ejbCreate() {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
}
タグについては XDoclet: @ejb Tag Reference を参照してください。
XDoclet を使用した EJB の実装では、インターフェイスを作成する必要はなく、ただ、 XDoclet タグ付きの実装を作成すれば良いだけです。
ビルド タスクの定義
Ant の場合はビルド プロセスに EJBDoclet タスクを追加することになりますが、 Maven の場合も同様です。ただ、 Maven 的にはゴールにしてしまった方が良いようですが。
<goal name="ejbdoclet">
<taskdef
name="ejbdoclet"
classname="xdoclet.modules.ejb.EjbDocletTask"
classpathref="maven.dependency.classpath"
/>
<mkdir dir="${maven.xdoclet.ejbdoclet.destDir}"/>
<ejbdoclet
destdir="${maven.xdoclet.ejbdoclet.destDir}"
ejbspec="2.0"
>
<fileset dir="${maven.src.dir}/java">
<include name="${maven.xdoclet.ejbdoclet.fileset.0.include}"/>
</fileset>
<entitybmp/>
<entitycmp/>
<entitypk/>
<session/>
<utilobject/>
<homeinterface/>
<localhomeinterface/>
<localinterface/>
<remoteinterface/>
<deploymentdescriptor
destdir="${maven.xdoclet.ejbdoclet.deploymentdescriptor.0.destDir}"
/>
<jboss
version="${maven.xdoclet.ejbdoclet.jboss.0.Version}"
destdir="${maven.xdoclet.ejbdoclet.jboss.0.destDir}/META-INF"
/>
</ejbdoclet>
<path
id="ejbdoclet.java.compile.src.set"
location="${maven.xdoclet.ejbdoclet.destDir}"
/>
<maven:addPath
id="maven.compile.src.set"
refid="ejbdoclet.java.compile.src.set"
/>
</goal>
以上のように、 EJBDoclet タスクを呼び出すゴールを作成します。タグについては XDoclet: Ant Task Reference: ejbdoclet を参照してください。これを java:compile ゴールが走る前に走らせます。
<preGoal name="java:compile">
<attainGoal name="ejbdoclet"/>
</preGoal>
依存 jar ファイルの定義
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>maven-xdoclet-plugin</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>maven-xdoclet-plugin</artifactId>
<version>1.2</version>
<type>plugin</type>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet-xdoclet-module</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet-ejb-module</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet-web-module</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet-jboss-module</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xdoclet-jmx-module</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>xdoclet</groupId>
<artifactId>xjavadoc</artifactId>
<version>1.0.3</version>
</dependency>
これで、 Java ソースコードがコンパイルされる直前で EJBDoclet により各種ソースコード、及び ejb-jar.xml や各アプリケーション サーバ用の設定ファイルなどが生成されるようになります。
参照
2005年12月07日(水) 22:10:32 Modified by uguuxp
