2017-09-14 8 views
0

私は、アプリケーションをweblogic 10.3からweblogic 12.2に移行しています。Weblogic 12.2 @EJBアノテーションを無視する

他のプロジェクトと共有されているライブラリが含まれています。このJARには、このようなことを見に@EJB注釈といくつかのPOJOを含んでいます

public abstract BaseSpecialService{ 
    @EJB DelegateService injectedService; 
} 

注これは単なるPOJOである:それは@Statelessまたは@Stateful注釈を持っていません。 私はこのサービスを使いたいときに、別のejb-jarの具象的な@Stateless Beanクラスで拡張します。しかし、私は必要なサービスのためにこれをしたいだけです、他のサービスはPOJOSとして扱われるべきです。

weblogic 10ではうまく動作しますが、weblogic 12に移行すると、@EJBアノテーションがEJBにないのに、コンテナが上記の例でDelegateServiceを注入しようとするため、アプリケーションをデプロイできませんしかしPOJOで。私は、展開に、このエラーを取得する:

[J2EE:160200]エラーのejb-refのモジュールから "com.example.BaseSpecialService/injectedService" アプリケーションの "ヌル" "myappの-0.1.0-SNAPSHOT" を解決します。 ejb-refには ejb-linkがなく、ターゲットBeanのJNDI名が指定されていません。 "com.example.DelegateService"インタフェースを実装するためにアプリケーション内のEJBが見つかりませんでしたので、ejb-refをターゲットBeanに自動的にリンクしようとすると、 が失敗しました。このejb-refを のターゲットEJBにリンクまたはマップし、ejb-refで宣言されたインタフェースが であることを確認します。

私の解釈では、Java EE 5に、application.xmlでEJBモジュールとしてマークされているだけのjarファイルをスキャンしますながらのJava EE 7のすべてのjarファイルは、注釈のためにスキャンしてしまうことがあります。私はPOJOに依存性を注入し、共有ライブラリjarをejb-jarではなく通常のjarとして扱うようにアプリケーションサーバを停止する方法を探しています。しかし、私はこれを行うための何かを見つけることができません。 何か助けていただければ幸いです。

答えて

0

WebLogicのCDIコンテナがjarファイルをスキャンし、POJO/EJBをそれらに注入しようとしているようです。私の提案は、特定のjarファイルのCDIスキャンを無効にし、その結果を見ることです。あなたは、次の内容を含むbeans.xmlのという名前のファイルを追加することにより、これを行うと、あなたのjarファイルのMETA-INFフォルダにそれを置くことができます。ご返信用

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
    version="1.1" bean-discovery-mode="none"> 
</beans> 
+0

感謝を。残念ながら、それは助けにはなりません:(私は明示的にapplication.xmlのモジュールとしてjarをマークしようとしましたが、何も変わりません。私はjarファイルをより小さなjarファイルにリファクタリングし、方法 –

関連する問題