2012-03-19 5 views
0

を参照私が最初にEJBProjを作成し、次のプロジェクト EJBWebClient EJBProj EJBDataAccessないクラスデフ検出されたエラー:EJBのEARパッケージングや問題

を持っています。作成されたEJBDataAccessをEJBProj.earに追加しました。その後、EJBWebClientを作成し、それをそれぞれ同じ耳に追加しました。

ここからEJBWebClientから、私はEJBProj内のEJBを検索します。 Beanの実装では、EJBDataAccess内でDAOを呼び出し、そのDAOに対してNoClassDefFoundエラーをスローします。

Ex。 PersonSerivceBeanは、EJBDataAccess内に存在するPersonDAO.getAllPeople()を呼び出します。ここにNoClassDefFoundがスローされます。

私はEJBDataAccessをEJBProjのビルドパスに参照しています。これは、EJBWebClientの参照先です。

何が間違っていますか?

答えて

1

MANIFEST.MFのjar名を手動で含めることで問題を解決しました

1

これはあなたのEJBコンテナの問題だと思います。私はあなたがJBoss、WebSphere、WebLogicなどを使って何を使っているのかよく分かりませんが、私はそのどれも熟知していません(EJBの使用をやめたのはずっと前です)が、NoClassDefFoundエラーが出るときはいつでも現在のClassLoader(.classのコードIDを "in"にロードしたClassLoader)は、参照されるクラスを見つけることができません。

私は多くの月を前に知っていますが、JBossはこれまで「ユニバーサルClassLoader」の概念を持っていました。基本的には、すべてのJAR/EAR/WARが1つの大きなプールにロードされました。問題は、コードが同じJARの異なるバージョンを必要とし、それらが常に互換性があるとは限りませんでした。また、誰かがあなたの前にミックスに「カスタム」クラス/ JARをドロップすると、技術的にセキュリティ上のリスクが生じます。 JBoss 3.5の周りにあったと思うのですが、Universal ClassLoaderから切り替えたのは、私たちのアプリがうまく動作するように修正するために多くの作業が必要だったことを覚えているからです。これの大部分は私たちにとってパッケージングの問題でした。

関連する問題