メッセージ駆動型 Bean といくつかのセッション Bean で構成されるアプリケーションがあります。それらの 1 つには、データベースまたは FTP サーバーへのアクセスを担当する DAO オブジェクトがあります。
2つのアプリケーションが必要です。それらの唯一の違いは、DAO クラスのインスタンスです。展開段階でそのインスタンスを指定できますか?
私の目的は、コードの重複を避けることです。
メッセージ駆動型 Bean といくつかのセッション Bean で構成されるアプリケーションがあります。それらの 1 つには、データベースまたは FTP サーバーへのアクセスを担当する DAO オブジェクトがあります。
2つのアプリケーションが必要です。それらの唯一の違いは、DAO クラスのインスタンスです。展開段階でそのインスタンスを指定できますか?
私の目的は、コードの重複を避けることです。
DAO が単なる POJO の場合、EE6 を使用している場合は Class env-entry をお勧めします (そうでない場合は String env-entry を使用し、Class.forName を自分で実行します)。
<env-entry>
<env-entry-name>daoClass</env-entry-name>
<env-entry-type>java.lang.Class</env-entry-type>
<!-- Specify a default, override at deployment time. -->
<env-entry-value>com.example.project.DefaultDAO</env-entry-value>
</env-entry>
@Resource(name="daoClass")
private void setDAOClass(Class<com.example.project.DAO> daoClass) {
this.dao = daoClass.newInstance();
}
または、DAO 実装が EJB である場合は、@EJB
インジェクションを使用して、デプロイ時にバインディング名を指定できます。