2

私は 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 の両方と互換性があるように

4

1 に答える 1

0

ソース コードは 10.3 用ではなく、EjbRef が weblogic.jar の weblogic によって提供された weblogic の以前のバージョン用であると考えました。しかし、おそらく10.3.x以降のいくつかのバージョンの後、weblogic.ejbgen.EjbRefがweblogic.jar以外の別のjarにリファクタリングされたようです

server/lib フォルダー内のすべての jar を展開したところ、同じパッケージが wls-api.jar で利用可能であることがわかりました

私の問題は解決しました。これを見つける前に、WebLogic 固有の jar ファイルを使用して、コードへの依存関係を削除していました。

于 2010-10-29T14:06:23.873 に答える