1

私のプロジェクトの構造は次のとおりです

JBoss AS 7.1.3.Final-redhat-4

EJB を含む戦争 VWeb.war 。VWeb がデプロイされると、次のようになります。

 java:global/VWeb/QServiceImpl!com.vi.qciapi.QService
java:app/VWeb/QServiceImpl!com.vi.qciapi.QService
java:module/QServiceImpl!com.vi.qciapi.QService
java:global/VWeb/QServiceImpl
java:app/VWeb/QServiceImpl
java:module/QServiceImpl

liferay プロジェクトである別の戦争 (ControlWeb-portlet.war) があり、 ControlWeb-portlet から Bean 内で上記の EJB にアクセスしようとしています。Bean は @ViewScoped です これは、ここにあるリンクに基づいて行われました

これらの組み合わせをすべて試しましたが、何も機能しないようです

@Inject
QService qService;

@EJB
QService qService;

@EJB(mappedName="java:global/VWeb/QServiceImpl!com.vi.qciapi.QService")
QService qService;

@EJB(beanInterface=QService.class)
QService qService;

@EJB(mappedName="java:global/VWeb/QServiceImpl!com.vi.qciapi.QService")
QService qService;

次のようにデプロイされた同じプロジェクトControlWeb-portletにEJBを保持しました

java:global/ControlWeb-portlet/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
    java:app/ControlWeb-portlet/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
    java:module/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
    java:global/ControlWeb-portlet/CdiServiceImpl
    java:app/ControlWeb-portlet/CdiServiceImpl
    java:module/CdiServiceImpl

そして、私はEJBを注入することができます

@EJB
CdiServiceImpl cdiServiceImpl;

別の WAR から EJB にアクセスする際に特に必要なことはありますか?

前もって感謝します

チャーリー

4

3 に答える 3

0

考えられる修正の 1 つは、2 回目の戦争でファイルに依存関係VWeb.warを追加することです。jboss-deployment-structure.xmlこれは次のようになります。

<jboss-deployment-structure>
  <deployment>
    <dependencies>
      <module name="deployment.VWeb.war" />
    </dependencies>
  </deployment>
</jboss-deployment-structure>

それでもうまくいかない場合は、こちらで説明されている回避策を試すこともできます。(必要な Bean を挿入するEJB を
作成し、プロデューサー メソッドを介してこれを公開します。これにより、最終的な宛先で使用できます。)@StatelessControlWeb-portlet.war@EJB@Inject

于 2013-05-28T12:39:55.730 に答える
0

私の理解が正しければ、リモート Bean には @EJB を使い続ける必要があります。

于 2013-05-14T14:32:10.947 に答える