2009-08-05 9 views
1

私はこれを初めて使い、Apache Camel、Spring Integration、さらにはTerracottaを見ています。Tomcatサーバー内に2つのアプリケーションを統合する最も簡単なソリューションは何ですか?

私は、ユーザー/グループ/アカウント/権限や共通のビジネスデータ(在庫/商品詳細など)のような共通データの共有を検討しています。

いずれの例も本当にありがとうございます。

答えて

0

理論的には、すべてのアプリケーションに独自のメモリスペースがありますが、私の頭の上からはアプリケーション間で情報を共有するためのさまざまな方法が考えられます。

共有情報の量が少ない場合は、おそらく直接アプローチが最適です。通信チャネルをセットアップします(Webサービスは少し残念ですが、良い例です)。そしてアプリケーションが互いに情報を要求するようにします。

大規模な共有がある場合は、おそらく2つのアプリケーションが同じデータベースまたはローカルファイルから読み取る必要があります。あなたのことを心配してください。これは同期の問題を引き起こし、あなたをロックとブロックの領域に導きます。この分野で軽く踏み込んでください...

+0

うん、私たちがメッセージングパターンを探している理由。 –

1

データベースレベルの統合はどうですか?

両方のアプリケーションが同じリレーショナルデータベースにアクセスするようにします。そのような仕事のために作られています。

これを行うには、2つのアプリケーションで共有ライブラリを使用できます(簡単にするため、それぞれWEB-INF/libにコピーがあります)。

+0

いいえ、dbは分離されていますが、可能な限りデータベースの共有を避けたいと考えています。 –

+0

この場合、共通データを管理し、Webサービスなどのクリーンなインターフェイスを介して公開する第3のアプリケーションが必要です。 (もちろん、他のアプリケーションでも、必要と思って同期問題を整理しておくことができれば、一部のデータのローカルキャッシュを保持することができます)。 – Thilo

1

これをWebコンテナに依存しないようにするには、完全なEARを作成することを検討する必要があります。

異なるWebアプリケーションには異なるクラスローダーがあるため、あるWebアプリケーションで別のWebアプリケーションをすぐに使用できるオブジェクトを作成することはできません。したがって、あなたは共通のクラスを知っている共通のクラスローダを持つ必要があります - 100%に準拠する - これらのクラスはどちらのWebアプリケーションWEB-INF/libにもないかもしれません。これは正しいことが難しく、その結果は壊れやすいものです。

したがって、オブジェクトを共有する複数のWebアプリケーションが含まれている可能性があるため、代わりにEARをデプロイできるWebコンテナに移行することを検討してください。私はJBossで始めるのが良い選択だと信じています。

+0

彼は「最も単純な解決策」を求めていましたが、 – Thilo

+0

この特定のケースでは、非常にうまくいくかもしれません。 –

0

あなたの新しいアイデアは、共通データを扱うためのクラスを構築し、アプリケーションごとに別々のサーブレットを作成することです。

これは少なくとも、あなたが技術を始めてより慣れ親しむことになります。

1

私は、ユーザー/グループ/アカウント/権限や共通のビジネスデータ(在庫/商品詳細など)の共有を検討しています。

ユーザー、グループ、アクセス許可などの一般的なデータは、中央のLDAPまたはデータベースに属します。これらは、あなたのSpring Securityソリューションの一部であり、すべてのアプリケーションは、それらが同じアプリケーションサーバー上にあるかどうかに関係なくそれらを共有できます。

在庫、商品の詳細などの共通のビジネスデータは、単一のサービスで「所有」する必要があると主張できます。これは、データを変更できる唯一のものです。他の人はサービスを照会することでアクセス権を得ることができますが、それらの表でCRUD操作を管理するのはサービスです。

これを行うと、オブジェクトとシステムがデータベースレベルで結合されないようにします。ネットワークレイテンシを増やすために、疎結合をトレードしています。

関連する問題