2011-08-04 15 views
6

私はJavaEEの初心者ですが、ASP.NET MVCの経験があります。 ASP.NET MVCでは、ASP.NET MVC Webアプリケーションでプラグインアーキテクチャを作成できるので、MVC構造体でDLLを作成して既存のASP.NET MVC Webアプリケーションに入れて、Webをコンパイルせずに動作させることができますアプリ。 http://www.wynia.org/wordpress/2008/12/05/aspnet-mvc-plugins/Spring MVCプラグインのアーキテクチャ

この種のアーキテクチャがSpring MVCで可能かどうか疑問です。例えば、MVC構造体でjar(またはwar)ファイルを作成し、それを既存のSpring MVC Webアプリケーションに入れると、Webアプリケーションを再コンパイルせずに動作するはずです。これが可能ならば、どのように達成できますか?どんな参考文献も理解できます。

答えて

2

再コンパイルせずに再起動する必要はありません。あなたはWEB-INF/libディレクトリにドロップする.jarを作成することができます。 classpath scanningを使用すると、起動時に新しいコントローラを展開できるはずです。ビューを完全にスキップし、直接ServletResponseにデータを出力することができます。瓶からのビューをレンダリングすることは可能かもしれないし、可能でないかもしれない、わからない。

+0

いいですね。再起動の部分はOKです。私はそれがASP.NET MVCで同じケースだと思います。ありがとう。 – Jon

1

"hotdeploy"を検索したいと思うようなサウンドです。

あなたが求めているのは、Springの機能ではなく、JVMとアプリケーションサーバーの機能です。アプリケーションサーバは実際にあなたのクラスが変更されたことを知ることができ、ClassLoaderの巧妙な使い方を利用して、実行可能なJVMに新しいバージョンをロードできるようになります。 Javaは実際にはこのように動作するように設計されていないので、いくつかの問題があります(ClassLoader、メモリリーク、ホットデプロイメントは潜在的な問題と可能な解決策についてもっと知るには良いキーワードです)。私はこれをプロダクションで使うのはお勧めできませんが、開発中は便利です。

これはアプリケーションサーバーの機能なので、実際の詳細は特定のアプリケーションサーバーによって異なります。その詳細については、そのドキュメントを参照してください。

実際のホットデプロイではなくプラグイン・マジックをほしいと思うなら、他にもできることがあります。カスタムClassLoaderは、任意のソース(ファイル、ネットワーク、データベース..)からクラスをロードし、リフレクションでこれらをインスタンス化して使用することができます。 (これはTomcat/JBossなどに戦争を展開するときに起こります)。 jar/warファイル内の非クラスのリソースにアクセスし、動的に再ロードする方が簡単です。

関連する問題