WeatherReportEJBのリモート・インタフェースを次に示します。
package oracle.ejb30;
public interface WeatherReport {
public String getTemperatorFor(String cityName);
public String getTemperatorFor(String cityName, boolean celcius);
}
Beanクラスは、ビジネス・インタフェースを実装する簡単なJavaクラスです。
package oracle.ejb30;
public class WeatherReportBean implements WeatherReport {
protected Map weatherMap;
// both Strings are configured for injection in the ejb-jar.xml file
private String celciusString;
private String fahrenheitString;
private TemperatureConverter temperatureConverter;
. . .
public String getTemperatureFor(String cityName) {
return getTemperatureFor(cityName, false);
}
public String getTemperatureFor(String cityName, boolean celcius) {
. . .
}
// this setter is configured for injection in the ejb-jar.xml file
public void setTemperatureConverter(TemperatureConverter converter) {
this.temperatureConverter = converter;
}
}
WeatherReportEJBのコールバック・リスナー・クラスを次に示します。
package oracle.ejb30;
public interface LifecycleListener {
public void initializeWeatherData(Object obj) {
. . .
}
}
このクラスはアノテーションを使用せず、かわりに簡単なデプロイメント・ディスクリプタを使用します。
次に、簡素化されたデプロイメント・ディスクリプタの内容を示します。 これには、EJB名、Beanクラス、リモート/ローカル・インタフェース、セッションの種類、注入された参照およびコールバック・リスナーが含まれます。 残りはデフォルトです。
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>WeatherReport</ejb-name>
<remote>oracle.ejb30.WeatherReport</remote>
<ejb-class>oracle.ejb30.WeatherReportBean</ejb-class>
<session-type>Stateless</session-type>
<ejb-local-ref>
<ejb-ref-name>ejb/TemperatureConverter</ejb-ref-name>
<local>oracle.ejb30.TemperatureConverter</local>
<property>temperatureConverter</property>
</ejb-local-ref>
<env-entry>
<env-entry-name>CelsiusString</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>degrees Celsius</env-entry-value>
<field>celciusString</field>
</env-entry>
<env-entry>
<env-entry-name>FahrenheitString</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>degrees Fahrenheit</env-entry-value>
<field>fahrenheitString</field>
</env-entry>
<lifecycle-callbacks>
<callback-listener>oracle.ejb30.LifecycleListener</callback-listener>
<post-construct>initializeWeatherData</post-construct>
</lifecycle-callbacks>
</session>
<session>
<ejb-name>TemperatureConverter</ejb-name>
<local>oracle.ejb30.TemperatureConverter</local>
<ejb-class>oracle.ejb30.TemperatureConverterBean</ejb-class>
<session-type>Stateless</session-type>
</session>
</enterprise-beans>
</ejb-jar>
以下の点に注意してください。
- 参照注入の
<field>タグおよび
<property>タグは、仕様で正式に定義されておらず、変更される可能性があります。
- <field>タグおよび
<property>タグの値は、注入されるBeanのフィールドおよびセッターに対応します。
- <lifecycle-callbacks>タグおよびサブタグは、仕様で正式に定義されておらず、変更される可能性があります。
- Bean自体のライフ・サイクル・コールバックを宣言する場合は、
<callback-listener>タグを省略してください。
- サポートされているライフ・サイクル・タグは、
<post-construct>、
<pre-destroy>、
<post-activate>、
<pre-passivate>で、使用されるタグは各Beanに1つの<lifecycle-callbacks>のサブタグとして表示されます。
- xmlでのインターセプタの構成例は、インターセプタのHow-Toで参照できます。
- TemperatureConverterは、ステートレスSession Beanのデプロイに最低限必要なxmlを示します。
Ant 1.6.2以上がマシンにインストールされ、正しく構成されていることを確認します。 オペレーティング・システムによっては、現在はAntが環境変数をサポートしていないものがあります。 該当するオペレーティング・システムの場合は、%HOWTO_HOME%ディレクトリにあるcommon.xmlファイルを修正してください。
demo
directoryのant-oracle.propertiesを編集し、次に示すとおりに、プロパティに正しい値が設定されていることを確認してください。
- oc4j.host: Oracle Containers for J2EE(OC4J)が稼働しているホスト(デフォルトはlocalhost)
- oc4j.admin.port: RMIポート番号(デフォルトは23791)
- oc4j.admin.user: 管理ユーザー名(デフォルトはoc4jadmin)
- oc4j.admin.password: 管理ユーザーのパスワード(デフォルトはwelcome)
- oc4j.binding.module: デプロイしたWebモジュールがあるWebサイト名(デフォルトはhttp-web-site)
アプリケーションを構築するには、
%HOWTO_HOME%ディレクトリで次のコマンドを入力します。
>ant
これで、
%HOWTO_HOME%/libディレクトリ内に
ejb30-jdk14.earが新しく作成されます。
構築に成功すると、このコマンドはアプリケーションをデプロイするよう試みます。 まず、OC4Jが稼働しているかをテストします。
アプリケーションは、別々にデプロイすることもできます。
%ORACLE_HOME%の環境変数が定義されていることを確認したら、
%HOWTO_HOME%ディレクトリから次のコマンドを入力します。
>ant deploy