2011-02-09 2 views
2

私は主にJava、Maven、Springを使って大きなWebプロジェクトを開発しています。しかし、特定の顧客ニーズに合わせて作成されたWebプロジェクトのさまざまな味があります。たとえば、ある顧客がTwitterページを望んでいて、別の顧客がTwitterページを望んでいない場合、そのTwitterページの有無にかかわらずそのWebプロジェクトのフレーバーを構築できる必要があります。モジュール化されたWebプロジェクトでOSGiが過剰使用されていますか?

私は、MavenオーバーレイとOSGiを2つのオプションとして検討してきました。 Mavenオーバーレイは、ベースオーバーレイからリソースをコピーするときに構築に時間がかかる傾向があります。私は、Webプロジェクトのための小さなチャンク(コントローラ、ビュー、JS /リソース/イメージ)をモジュール化するための適切な道筋にあるように思われるため、Spring OSGi Webをオプションとして検討していました。

OSGiオーバーキルですか?私はそれを使用する必要がありますか?何か良いことがありますか?

答えて

1

OSGIあなたが不測の機能(およびコード)を削除/追加する必要がある場合(だけでなく、それを有効または無効)、実行時に素晴らしいですが、これは、Webアプリケーションには必要ありませんほとんどの時間。

あなたのケースでは、可能な限り、機能を有効または無効にするために構成(ファイル)を使用することをお勧めします。これには、1つのWARだけが必要であるという利点もあります。

の問題対処するには: - (OK、あなたは、いくつかの戦争を持っていますが、唯一のdiffern

  • use maven environements:「WAR内の設定ファイルを置く方法を」、あなたはいくつかの方法(Different files to be packaged in a Maven war project)を持っていますWARパッケージ化プロセスのみが環境ごとに行われるため、コンフィグレーションファイル内でWARパッケージ化プロセスが遅くなることはありません)
  • WARの外部にコンフィグレーションを保存する
  • データベース
+0

私は環境が答えだとは思わない。私は、構成が異なる多くの環境で1つのWARを構築するのではなく、さまざまな機能を持つさまざまなWARを作成しています。たとえば、index.jspとlogin.jspはすべてのプロジェクトで共有されますが、profile.jspは一部のプロジェクトでのみ共有されます。 – Matt

+0

@Matt Fisher - 環境に関するヒントは、設定ファイルとの組み合わせにのみ役立ちます。ソースコードを入れて削除する理由がある場合は、osgiを使用してください。 – Ralph

0

マットは、経験則として、アプリケーションのバージョンを1つだけにして、設定プロパティで管理するようにしてください。 10のクライアントを持ち、それぞれに2つの機能があり、2つのクライアントが同じ機能を持っていない場合の状況を想像してみてください。

+0

これはちょっと考えています...ページ、コントローラ、イメージ、スクリプトなどを必要としないWARに含めるのはなぜですか?私はプロジェクト(プロジェクトのセット)のモジュール化が悪いとは思わない - 私はそれを行う最良の方法を探している。 – Matt

1

Spring Slicesに興味があります。基本的には、Webアプリケーションの断片を個々のバンドルとしてデプロイすることができます。全体的な提供の複雑さに応じて、これが望ましい場合があります。

私はそれを真剣に見ていないので、私はそれが現在の状態だとは思っていません。

最新の情報をお持ちの方は、気軽にリンクを追加してください。

http://blog.springsource.com/2009/08/07/slices-menu-bar-screencast/

+0

私はこのことについても簡単に見てきました。Springスライスは、開発者がプロ​​ジェクト/ WARを構築するモジュールを選ぶことを可能にすることによって、正しい方向性だと思います。これ以上のことを見て... – Matt

+0

実際それははるかに印象的です。サイトの機能を別のバンドルで開発した後、実行時に機能を展開/アップグレードできます。カートセクションとストアセクションが引き続き実行されている間は、フォーラムセクションのアップグレードを検討してください。 – ptomli

0

https://github.com/griddynamics/banshun osgi-lessのモジュール性は、カスタマイズの2つの概念をサポートしています。これはビルド時間のカスタマイズと呼ばれるワイルドカードによるモジュール(子コンテキスト)のピックアップとインスタンス化を行うことができます。これは、MavenプロファイルがWARに必要なオーバーレイを配置することを意味します。逆の方法は、必要なモジュールがプロパティに従って定義されている場合、実行時のカスタマイズです。

関連する問題