実際にはパッケージを使用しないこともないでしょうし、コンパイルもするでしょう。(当たり前か)
前回よりはより実践的になるようにちょっといくつか変更してみました。
これらが生成元の Session Bean である ConverterBean です。
最初にパッケージの指定をしました。
package test.ejb;
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import java.math.*;
// Public --------------------------------------------------------
/**
* Deposit money.
*
* @ejb:bean type="Stateless"
* jndi-name="ejb/SimpleConverter"
* local-jndi-name="ejb/SimpleConverterLocal"
* viewtype="both"
*/
public class ConverterBean implements SessionBean {
BigDecimal yenRate = new BigDecimal("121.6000");
BigDecimal euroRate = new BigDecimal("0.0077");
// Public --------------------------------------------------------
/**
* Convert Doller to Yen
*
* @ejb:interface-method
*/
public BigDecimal dollarToYen(BigDecimal dollars) {
BigDecimal result = dollars.multiply(yenRate);
return result.setScale(2,BigDecimal.ROUND_UP);
}
// Public --------------------------------------------------------
/**
* Convert Yen to Euro
*
* @ejb:interface-method
*/
public BigDecimal yenToEuro(BigDecimal yen) {
BigDecimal result = yen.multiply(euroRate);
return result.setScale(2,BigDecimal.ROUND_UP);
}
public ConverterBean() { }
public void ejbCreate() { }
public void ejbRemove() { }
public void ejbActivate() { }
public void ejbPassivate() { }
public void setSessionContext(SessionContext sc) { }
}
コンパイルももともと j2ee.jar がクラスパスに入っていなくてもいいように build.xml の中で指定するようにしています。
<?xml version="1.0"?>
<project name="ejbdocletbuild" default="compile">
<property name="xdoclet.lib.dir" value="c:\XDoclet-1.2.0-beta1\lib"/>
<property name="log4j.lib.dir" value="c:\jakarta-cactus-13-1.4.1\lib"/>
<property name="j2ee.lib.dir" value="c:\j2sdkee1.4\lib"/>
<target name="init">
<mkdir dir="build/classes"/>
<mkdir dir="build/META-INF"/>
<mkdir dir="dist"/>
<echo>init complete!</echo>
</target>
<target name="compile" depends="init">
<javac srcdir="."
destdir="build/classes"
classpath="${j2ee.lib.dir}/j2ee.jar"
/>
<echo>compile complete!</echo>
</target>
<target name="archive" depends="compile">
<jar destfile="dist/project.jar"
basedir="build/classes"
/>
<echo>archive complete!</echo>
</target>
<target name="clean" depends="init">
<delete dir="build/classes"/>
<delete dir="build/META-INF"/>
<delete dir="dist"/>
<echo>delete complete!</echo>
</target>
<target name="ejbdoclet" depends="init">
<taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
<classpath>
<fileset dir="${xdoclet.lib.dir}" includes="*.jar"/>
<fileset dir="${log4j.lib.dir}" includes="*.jar"/>
<fileset dir="${j2ee.lib.dir}" includes="*.jar"/>
</classpath>
</taskdef>
<ejbdoclet destdir="." ejbspec="2.0">
<fileset dir=".">
<include name="**/*Bean.java" />
</fileset>
<remoteinterface/>
<localinterface/>
<homeinterface />
<localhomeinterface/>
<deploymentdescriptor
destdir="build/META-INF"
validatexml="true"
/>
<jboss version="3.0"
destdir="build/META-INF"
validatexml="true"
/>
</ejbdoclet>
<echo>EJB generation complete!</echo>
</target>
</project>
以下のような状態から ant を実行します。
(test/ejb サブディレクトリに ConverterBean.java があります)

ejbdoclet ターゲットを実行して EJB インターフェイスのソース (Remote/Home/Local/LocalHome) を生成します。

コンパイルは以下のようなかんじです。生成されたものでコンパイルできています。(当たり前か)
デフォルトのターゲットが compile なので、ただ ant と実行するだけでも同じ結果になります。

ついでに jar ファイルにするための archive ターゲットの実行結果です。

生成されたものはこんなかんじになります。
Remote インターフェイスです。

Remote の Home インターフェイスです。

Local インターフェイスです。

Local の Home インターフェイスです。

デプロイメント・ディスクリプターです。

後半部分は今回関係ありませんが、こんなかんじです。

JBoss 用のベンダー固有の指定ファイルです。

|
|