1

私はEclipseでプロジェクトを構築しようとしています(実際にはRADを使用しているので、基本的にEclipseであり、「Java EEプロジェクト」と言うときは「エンタープライズアプリケーションプロジェクト」を意味します)。

私のエンタープライズアプリケーションプロジェクト(「EAR」プロジェクト)には、2つのモジュールプロジェクトがあります。--service --web

サービスプロジェクトにはいくつかのものが含まれており、すべてSpringを使用して接続されています。

Webプロジェクトには独自のものがあり、すべてSpringを使用して接続されています。WebプロジェクトのUIスタッフは、サービスプロジェクトのUIスタッフを使用する必要があります。

両方のプロジェクトは、モジュールとしてEARプロジェクトに含まれています。

Webプロジェクトは、「サービス」プロジェクトをビルドパスの依存プロジェクトとしてリストし、エクスポート用にチェックオフされ、EEモジュールの依存関係としてもリストされます。

私はこれを機能させるのに本当に苦労しています:

もちろん、WebプロジェクトのSpringコンテキストは、アプリケーションがデプロイされたときに読み込まれるものであり、サービスプロジェクトから必要なSpring構成をインポートします。これは正常に機能しているようです。

SpringがBeanをインスタンス化しようとすると、ClassNotFoundExceptionがスローされます。最初の豆について。

スプリング構成をサービスコンテキストからコピーしてWebコンテキストに貼り付けようとしましたが、同じClassNotFoundExceptionが発生しました。

WebプロジェクトのJavaコントローラークラスでそのタイプのオブジェクト(Springが言うクラスが見つからない)をインスタンス化しようとしましたが、コンパイル時(コンパイルエラーなし)と実行時(例外なし)の両方で成功しました。 。

そのため、Springがクラスパスを使用しようとすると、サービスプロジェクトのクラスはクラスパスで使用できなくなります。

ここで何が起こっているのか、そして/または私がそれについて何ができるのか、何かアイデアはありますか?

4

3 に答える 3

0

これはクラスローダーの問題です。

Springを使用しているので、EJBがないと仮定します。その場合、なぜEARが必要なのですか?すべてをWebプロジェクトとして単一のWARにデプロイします。

すべての.classおよびSpring構成.xmlファイルをWEB-INF/classesに配置します。を使用して構成をロードしますorg.springframework.web.context.ContextLoaderListener

于 2011-05-03T12:41:22.470 に答える
0

ParentClassFirstを使用する必要があるクラスローダーポリシーがあります。これは、Application.xmlまたはweb.xmlのいずれかを介して管理されます。xmlを確認してから試してください。

于 2011-05-03T21:51:24.203 に答える
0

私はこれを修正したようです-問題が正確に何であったかはわかりませんが、私の春の設定に小さなタイプミスがあったに違いありません。新しい春の構成で最初からやり直すことにしました。新しい構成を構築し始めたとき、バックアップは正常に機能していました。古いものに問題があったに違いありません。

しかし、提案をありがとう。

残念ながら、プロジェクトの構造を常に変更できるとは限りません。私たちは他の人が設置した構造に取り組んでいます。

ParentClassFirstとParentClassLastの設定を調べました。Websphereでは、何も指定しない場合はParentClassFirst設定がデフォルトであるように思われるため、その機能を取得するために指定せずに残しておきます。 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/crun_classload.html

于 2011-05-04T11:43:01.297 に答える