EJBを使用するアプリを更新する推奨方法はありますか?
-
05-07-2019 - |
質問
EJBで動作するJavaアプリがありますが、次の場合:
- EJBが更新され、アプリが壊れています。
- アプリサーバーが更新され、アプリが壊れています。
人間の関与なしで、アプリサーバーとBeanのクライアントjarを更新する好ましい方法はありますか?
優先される方法がアプリサーバーに依存する場合は、jbossを想定します。
解決
それが人々がWebサービスに移行する理由の1つです:)またはJMSも使用します。
実際、アプリサーバーがアップグレードされたり、ベンダーが変更されたりすると、古い/外部のスタブがサーバー側で新しいコードで動作する方法がなくなります。 :-(
アプリケーションデプロイヤの役割があるべきだと宣言されたEJBを覚えていますか?クライアントアプリケーション用にclient.jarを準備して配布するかどうかは彼次第です(または、アプリケーションパッケージャーであるかどうかは問題ではありません。ポイントは、自動操作ではありません)。
いくつかのトリックが可能かもしれません(クライアント上の特定の場所にclient.jarを配置して、クライアントが最初にダウンロードし、次にクラスローダーを使用して使用するよう要求するなど)が、これらは確立された実践よりもハッキングです。
JBossの詳細に関しては、情報がありません。
他のヒント
基本的な問題は、1つのコンポーネント間のインターフェイスコントラクトが変更されると、他のコンポーネントが破損することです。これは、AppsとEJBに限定された問題ではなく、コンパイラセーフではありません。
私が知っている唯一の自動化されたアプローチは、アプリケーションプロジェクトをEJBプロジェクト(IDEおよびビルドファイル内)に依存するようにプロジェクトをセットアップし、コンパイラチェックを行うことです。そして、それらをEARとして一緒にデプロイします。
それがオプションではなく、個別にデプロイする必要がある場合、EJB開発者は後方互換性のあるインターフェースをそのまま維持することについてゲームに参加する必要があります。