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