2013-01-16 16 views
15

Java Webアプリケーションの「プラグイン」アーキテクチャの実行方法に関するアドバイスをお願いします。Java Webアプリケーション「プラグイン」アーキテクチャ

現在、Tomcatサーブレットコンテナでは、非常に単純で標準的なSpring + Hibernate + Struts 2を使用しています。 (Mavenで構築)

私はRedmineのようなものが必要です。どのモジュールでも有効/無効を切り替えることができます。 Redmine UI

OSGi、Portletなどの重いオプションは除外してください。

  • OSGiはあまりにも重いので、ウェブ用の技術はうまく採用されていません。私はすでにEclipse Germiniを見ました。
  • Portletそれはちょうど古い、かつては普及していなかった。
+0

私は賞金を獲得しましたが、質問はまだクローズされています。 –

答えて

13

私はいくつかの可能な解決策を提供しようとします。私が取り組んでいるプロジェクトのために小規模なPoCを準備するのに少し時間を費やしましたので、以下のオプションが適切であることを願っています。

重要な点:拡張ポイントを定義して、使用可能な実装を解決して見つけることは本当に簡単です。利用可能なソリューションの多くは、例えば良いとシンプルなもの、あります - 、JSPF

リソースがWEBアプリケーション

のOSGi

OSGiのための主要な問題であると、その悪いわけではないとすることができます便利である。それは重く見えますが(そしていくつかの実装は重いですが)、これは標準化されたプラットフォームの価格です。私はApache Felixをチェックすることをお勧めします。これは "軽量"モードで使用できます。ところで、それはのように疎結合プラグインベースのアプリケーションを構築されたWebコンソールを含み、役に立つことができます

enter image description here

いくつかの例Extending the Apache Felix Web Console

Webコンソールは、登録することにより拡張することができ

サービス属性が の インタフェースjavax.servlet.ServletのOSGiサービスfelix.webconsole.labelは、 のラベル(URLの最後のセグメント)に設定されています。各サービスは、Webコンソールプラグインまたは簡潔に プラグインと呼ばれます。

また、清潔でシンプルで、プラグインを管理するためにOSGiを使用するeie-managerをチェックすることもできます。あなたのための良い例になるかもしれません。私はJenkins/Hudsonの背後にある解決策を検討することをお勧め

カスタムプラグインフレームワーク

。私はJenkinsのプラグインシステムはかなり成熟しており、信頼性が高いと言います。良い例として使用することができます。

enter image description here

も、私はカスタム依存リゾルバとJSPFに基づいてプラグイン抽象レイヤを構築してきた私のプロジェクトのためにHudson Plugin Architecture

シンプルなソリューション

を確認してください。

PROS:

    • シンプルで小さなきれいな概念
    • が良い

    CONS動作します:適切なプラグインを管理せずに

    • が遅くなることがあります(完全なクラスパス検索を)
    • は、私はあなたが実際にいくつかのシンプルさを必要とする、すべてを制御したい場合にのみJSPFを使用することをお勧め非常に基本的な機能
    • 追加の注意が必要になる場合があり

    を提供します。 JPFは、たとえば、箱から出して興味深い機能の多くを提供します。

    プラグインは、「ホット登録」とさえ アプリケーション実行時にデ登録することができます。さらに、登録されたプラグインは、 を「オンザフライ」でアクティブ化および非アクティブ化でき、ランタイムリソース の使用を最小限に抑えることができます。

    問題はJPFが死んでいることです。

    提案

    Apache Felixでいくつかの時間を費やしています。それは十分に成熟しているので、あなたの投資は多く返済されるかもしれません。

    6

    この質問への回答をチェックアウト:Best way to build a Plugin system with Java

    あなたはプラグインのコードを信用していない場合は、ここで説明するように、あなたは、サンドボックスを実装することができます:Sandbox against malicious code in a Java application

    オープンソースJava Plug-in Frameworkプロジェクトサポートプラグインの非アクティブ化、あなたの目的には重すぎる場合でも、あなたはそれからインスピレーションを得ることができます。

    +0

    これをWebパーツにどのように適用するのですか?すべてのプラグインを.warとして作成しますか? –

    +0

    これらのプラグインを独立したWebアプリケーションにすることができれば、何もする必要はありません。たとえば、Tomcatマネージャwebappを使用すると、サーバーをシャットダウンして再起動することなくwebappsを起動/ /tomcat.apache.org/tomcat-7.0-doc/manager-howto.html – lbalazscs

    +0

    プラグインは独立したWebアプリケーションであってはいけません。このようにして、それらを統合する方法(クロスリンク、セキュリティ、簡単なサインオンなど)がたくさんあります。 –

    2

    アラスシアオープンソースプラグインシステムhere私はそれがAtlassianチームによって大きく働いているのを見ています。その価値を探る価値があるdocumentation

    関連する問題