0

フォームをユーザーに表示するアプリケーションXYZがあります。このアプリケーションを配布し、外部開発者が独自のフォーム(アプリケーションXYZによって提供されるインターフェイスを拡張する)を作成し、アプリケーションXYZが変更することなくそのフォームを表示できるようにこれらのフォームを展開できるようにしたいと考えています。アプリケーションXYZは、利用可能なすべてのフォームクラス(これらは反映されてインスタンス化されます)を一覧表示する設定ファイルを参照することで、表示可能なフォームを認識します。WARを変更/再デプロイすることなく、配備されたWARに依存関係を追加することは可能ですか?

私たちはアプリケーションサーバーとしてWeblogic 10.3を使用しており、アプリケーションはGWT/Javaアプリケーションです。

私が知っている限り、アプリケーションXYZをクラスパスに追加された新しい依存関係で再コンパイルして再デプロイする必要があるため、ここで説明したシナリオは不可能です。誰かが私に別のことを教えてくれることを願っています。

答えて

1

サーブレットの仕様では、各WARファイルが独自の分離クラスローダーにデプロイされていると記載されています。これにより、同じサーブレットコンテナインスタンス上で実行される複数のWebアプリケーションの分離が可能になります。

tomcat documentationは、様々なクラスローダーの関係を非常によく表しています。

WARを再コンパイルする代わりに、これらの余分なカスタムjarを "$ CATALINA_BASE/lib"ディレクトリ(またはWeblogicの等価なもの)に配置することもできます(これは、Weblogicが同等の方法で実行する必要があります) )。

しかし、私はに注意するの実装上の問題のカップルを参照してください。

  1. アプリケーションは、固定 インターフェイスに対してコンパイルする必要があろう。これにより、ユーザーは のランタイム実装をそれらのクラスに置き換えることができます。
  2. アプリケーションのすべての インスタンスでカスタムjarが共有されます。これにより、同じアプリケーションサーバーインスタンスで古いバージョンのアプリケーションを実行することが除外される可能性があります。
  3. デプロイメントの問題を考えてください...あなたのアプリケーションが欠けている依存関係にどう反応するかを考えてみましょう。ユーザーはJavaスタックトレースを理解できません:-)
+0

こんにちは、ご回答いただきありがとうございます。私はweblogicのドキュメントhttp://docs.oracle.com/cd/E13222_01/wls/docs92/programming/libraries.htmlを見てきましたが、共有J2EEライブラリ/オプションのパッケージ。しかし、再コンパイルの問題はまだ存在すると思います。なぜなら共有ライブラリを参照するためには、アプリケーションマニフェストファイルに参照を追加する必要があるからです。 – Josh

+0

設定ファイルをアプリケーションの外部のクラスパスに置くことができます。さまざまなオープンソース製品がカスタムプラグインをどのようにサポートしているかを調べる方がよいでしょう。通常、プラグインが登録してアプリケーションと通信するために公開されたJavaインタフェースがあります。集中化された設定ファイルを避けるため、アプリケーション拡張はクラスパス上に配置され、実行時に発見されます。 –

関連する問題