2010-12-29 5 views

答えて

0

いいえ、Springには別のクラスローダーがありません。 webapp(war)にいる場合は、別のクラスローダーがあります。この戦争が耳の中に含まれている場合、これは親のものになります。そうでなければ、アプリケーションサーバの一般的なクラスローダーなどがあります。それは本当にアプリケーションサーバーに依存しています。 など。 Tomcat 5.5の場合は、階層内に通常4つのクラスローダーがあります。war - > shared(すべてのwarに共通) - > common - > bootstrap Tomcat 6では共有と共通が同じものにマージされました。

さらに、Springを使用しない場合、Thread#contextClassLoaderは未定義です。 Springでは、webappクラスローダーをThread#contextClassLoaderに取得します。そして、SpringはクラスロードのためにThread#contextClassLoaderを使用します。あなたのコード(または第三者)がThread#contextClassLoaderを変更する可能性があるので、これは重要です。

1

いいえ。春は(デフォルトでは)新しいクラスローダーを作成しません。

メモリからはThread.getContextClassLoader()クラスローダーを使用しているため、アプリケーションサーバーでは、期待するwebapp/ejbクラスローダーを取得します。

0

Springのコンテキストローダーリスナーはweb.xmlの一部であるため、アプリケーションクラスローダを使用していると言えます。これは、アプリサーバークラスローダーが親であり、ブートストラップクラスローダーがその祖父母であることを意味します。

+0

こんにちはduffymo、あなたはそれがアプリケーションクラスローダーを使用すると言うとき、あなたは何を意味するかについて詳しく説明できますか? –

+0

これを読む:http://www.objectsource.com/j2eechapters/Ch21-ClassLoaders_and_J2EE.htm – duffymo

関連する問題