5

Java EE は初めてで、JBoss 7 を使用して最初のプロジェクトを作成しています。私のワークスペースには、EAR プロジェクト、EJB プロジェクト、WEB プロジェクト、および JPA プロジェクトがあります。EJB プロジェクトで作成された ejb は、JPA プロジェクトで作成された ejb を使用したいと考えています。すべて正常にコンパイルされますが、EAR プロジェクトをデプロイすると、次の例外が発生し、デプロイが失敗します。主な例外の原因は次のとおりです。

JBAS014544: com.kohlisoft.stockmanagement.ejb.main.StockManagementService/sms をバインドするためのタイプ 'com.kohlisoft.stockmanagement.jpa.service.StockManagementBeanJpa' のインターフェースを持つ EJB が見つかりません

EJB プロジェクトが jpa jar 内のクラスを参照できないと思われます。

私はそれを整理するためにさまざまなリンクをたどりましたが、助けにはなりません。いくつかの提案に基づいて修正しましたが、まだ喜びはありません。1. 構造を確認すると、JPA プロジェクトは .ear の lib フォルダーの下にあります。2. EJB プロジェクトのマニフェスト ファイルを更新して、依存関係を jpa jar に追加しました。

ここで何か助けていただければ幸いです。

JPA プロジェクトの EJB。

@Stateless
@LocalBean
public class StockManagementBeanJpaBean implements StockManagementBeanJpa {

    @PersistenceContext(unitName="StockManagement")
    private EntityManager em;

それを使用する EJB プロジェクト内の EJB:

@Stateless
@LocalBean
public class StockManagementService implements StockManagementServiceLocal {

    @EJB
    StockManagementBeanJpa sms;

...

EJB プロジェクト MANIFEST ファイル。

Manifest-Version: 1.0
Class-Path: StockManagement-ejbClient.jar
Dependencies: lib/StockManagement-jpa.jar

.ear 内の .jars と .war の構造は次のとおりです。

.ear
 |____ ejb.jar
 |
 |____ ejbClient.jar
 |
 |____ web.war
 |
 |____ /lib
         |
         | ____ jpa.jar
         |
         | ____ all other jars related to derby client, hibernate, jta etc.

他に必要なファイルがあれば教えてください。

4

2 に答える 2

10

ファイル構造は問題ないようです。

では、どこが問題なのでしょうか?

@LocalbeanEJB がインターフェースを拡張していない場合にのみ、 EJB Bean内で使用する必要があります。をインターフェイス@Localに使用してから、インターフェイスを使用してEJBを拡張するか、インターフェイスのない EJB内で Stranghを使用できます。ただし、非インターフェース EJBにのみ使用されます。だから、あなたがしていることは正しくありません。@Local@Localbean

インターフェイスを拡張しているので、次のようにします。

インターフェース

@Local
public interface StockManagementBeanJpa
{

....

}

EJB

@Stateless
public class StockManagementBeanJpaBean implements StockManagementBeanJpa 
{

....

}

これをすべての EJB に対して行います。

@Local同じアプリケーション (同じ EAR) から EJB を呼び出しているため、あなたのケースで機能することをもう 1 つ指摘したいと思います。これは、クロス アプリケーション コール (異なる EAR、WAR ...) または EJB を呼び出すリモート クライアントの場合には機能しません。この場合、 が必要になります@Remote

于 2013-05-27T03:51:06.630 に答える