0

やあみんな、最初に:私の英語は上手ではありませんが..さあ:

私は日食で2つのプロジェクトを持っています:

JPA (モデルと dao を使用) EJB (私の Web サービスを使用)

および EAR プロジェクト (JPA + EJB)。私のセットアップ: JBoss 7.1 AS

私の問題:

@Stateless
@WebService --> THIS IS IN EBJ PROJECT
public class PessoaFisicaWS implements Service {

    @EJB
    private PessoaFisicaDAO dao;

}

これは私のDAO実装です

@Stateless ->> THIS IS IN MY JPA PROJECT
public class JPAPessoaFisicaDAO extends JPAAbstractDAO<PessoaFisicaBean>
        implements PessoaFisicaDAO {

    public PessoaFisicaBean getPessoaFisicaByCPF(String cpf) {
        TypedQuery<PessoaFisicaBean> query = manager.createQuery(
                "SELECT p from PessoaFisicaBean p where p.cpf = :cpf",
                PessoaFisicaBean.class);
        query.setParameter("cpf", cpf);

        return query.getSingleResult();
    }
// with others impl
}

わかった

EJB プロジェクトは、クラスパスにJPA プロジェクトを追加します。わかった

エラーはありません。しかし、展開中:

原因: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014544: パコテ.PessoaFisicaWS/dao をバインドするためのタイプ 'br.com.processo.dao.PessoaFisicaDAO' のインターフェースを持つ EJB が見つかりません

何か案が?

編集

EJB プロジェクト (WebService の同じパッケージ) に (DAO とあなたの impl) を追加すると、ITS WORKS が機能します。しかし、私は2つのプロジェクトで分ける必要があります。

4

3 に答える 3

0

これは EJB ではないため、このアノテーション@EJBを から削除してください。dao

于 2013-10-31T19:23:03.203 に答える
0

各モジュールには独自のクラスローダーがあるため、クラスの可視性は各モジュールに限定されます。libインターフェイスを含む jar を作成し、EARのディレクトリに配置する必要があります。AS7でのクラスの読み込みで詳細を参照してください。

ビジネス インターフェイスを格納するための標準 Java プロジェクトを作成する必要があります。展開アセンブリ:

ここに画像の説明を入力

プロジェクトのエクスプローラー ビューには、次のように表示されます。

ここに画像の説明を入力

于 2013-10-31T19:23:46.753 に答える
0

とてもシンプルです。エラーは、実装ではなくインターフェイスを参照するように指示しています。

したがって、「PessoaFisicaDAO」が @Remote または @LocalBean アノテーションを持つインターフェースであることを確認してください

@EJB
private PessoaFisicaDAO dao;
于 2014-10-30T20:04:56.943 に答える