私は EJB3 を初めて使用し、既存のコードに取り組んでいます。
weblogic10.3 を使用しており、以下のコードは正常に動作します。
@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database")
public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb
private Database<Object> databaseBean;
10.3 では、weblogic.jar にパッケージ weblogic.ejbgen.EjbRef があります。
現在、weblogic10.3.1 に切り替えており、weblogic.jar には weblogic.ejbgen パッケージが付属していません。
そこで、コードを次のように変更しました (10.3.1 ではまだテストされていません)。
@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database") --- removed this line
public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb(mappedName="Database") -- added the mapped name here.
private Database<Object> databaseBean;
下位互換性のため。wl10.3 でコードを実行すると、エラーが発生します
エラーは -
javax.ejb.EJBTransactionRolledbackException
: EJB 例外: :com.bea.core.repackaged.springframework.beans.factory.BeanCreationException
: 依存性注入の失敗: クラス インターフェイスに関する Bean 定義が見つかりませんjavax.persistence.EntityManager
。ネストされた例外は次のとおりですcom.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException
: タイプ [javax.persistence.EntityManager
] の一意の Bean は定義されていません: タイプ の Bean はありませんjavax.persistence.EntityManager
。owner=com.bea.core.repackaged.springframework.context.support.GenericApplicationContext
: 表示名
コードを何/どのようにリファクタリングする必要がありますか。または、ここに何が欠けていますか? @EjbRef を使用せずに私のコードが 10.3 と 10.3.1 の両方と互換性があるように