3

私はトムキャットを使用しています。グアバ jar と自分の jar を tomcat/lib に入れたい。私のjarにはイベントバスを取得するためのファクトリがあり、すべてのWebアプリケーションがそのファクトリにアクセスできます。webapp1 にリスナーを登録し、webapp2 からイベントを投稿する方法がわかりません。私が webapp2 で使用しているオブジェクトは webapp1 には存在しません。文字列、文字列のマップなどの Java オブジェクトのみを共有できますが、他の webapp のオブジェクトは共有できません。

いくつかのアイデア?

4

2 に答える 2

3

これはクラスローディングの問題です。おそらく、webapp1のドメインクラスはwebapp2では利用できません(利用できないはずです)。私が言うとき、あなたはウェブアプリ間でライブオブジェクトを共有したくないと私を信じてください。

データを共有する場合は、適切なJMS(または他の同様のメッセージングライブラリ)を使用することを検討してください。動作を共有する場合は、RESTサービスを使用してください。単純な一般的な解決策に言及するだけです。

そうは言っても、本当にそこに行く必要がある場合は、共有したいクラスを1つのjarに入れて、これとguavaをサーバー全体のクラスパスに配置し、メモリを作成するときにデプロイメント手順に特に注意を払うことができます。 -リーク。(それでも、そのような厄介なハックを使用するたびに、神は子猫を殺します

于 2012-10-15T18:52:56.060 に答える
1

Guava'sEventBusは、単一のアプリケーション内のイベントでの使用のみを目的としています。アプリ間またはサーバー間の通信用ではありません(少なくとも直接ではありません)。また、現在同じ Tomcat インスタンス内で両方の Web アプリケーションを実行しているという事実に依存するべきではありません。これは、ある時点で変更する可能性が高いためです。示唆されているように、より良い解決策は、JMS のようなアプリ/サーバー間の通信を目的としたメッセージング ライブラリです。

于 2012-10-15T22:06:50.360 に答える