2011-06-26 10 views
1

クラスパスとlibフォルダ(WEB-INF/...)のスコープは、私が把握できなかったことです(J2EEの経験はわずか4ヶ月です) なぜクラスを読み込むための2つの場所? サーバの起動時には、最初に "読み込まれた"クラスは何ですか? クラスパス内のすべてのクラスの読み込みが十分でないのはなぜですか?すべてであれば - クラスパスとlibフォルダの違い

あなたは

答えて

2

アプリケーションサーバは、グローバルクラスパスに、最初のモジュールのlibディレクトリになりますありがとうございました。

通常、アプリケーションサーバーのグローバルなclass-pathを通じてロードされたクラスは、実行時に置き換えることができません。つまり、コードをアップグレードまたは置換するためにアプリケーションサーバー全体を停止して再起動する必要があり、実稼働環境では受け入れられないことがよくあります。また、アプリケーションまたはモジュールのクラスおよびjarファイルが、アプリケーションサーバーのコードと競合したり、同じアプリケーションサーバーにデプロイされた他のアプリケーションと競合する可能性があることも意味します。

使用しているアプリケーションサーバーのドキュメントは、おそらくグローバルクラスパスの変更を禁止するか、強く推奨しません。

通常、アプリケーションサーバーはアプリケーションごとに個別のクラスローダーインスタンスを作成します。これにより、アプリケーションサーバーは各アプリケーションのコードの依存関係を切り分けることができ、モジュールのリロードやアンロードが可能になります。

最初からJavaを使用していた現在のクラスローダモデルは、理解が難しく、すぐに非常に複雑な問題につながります。残念ながら、これらの問題の多くは、統合テストおよび運用環境で最初に遭遇することがよくあります。 OSGiのようなフレームワークは、これらの問題のいくつかに取り組もうとしており、JCPプロセスの下で、クラスの読み込みと依存関係管理をJava仕様内で改善するためのさまざまな取り組みが行われています。

+0

非常にきれいだったThx Kim – JBoy

+0

よろしくお願いします! :-) –

関連する問題