通信サービスプロバイダを対象としたJava EEアプリケーションを構築しました。アプリケーションは、すべての種類の計算を行います。 可能な限りアプリケーションを柔軟に保ち、クライアントが必要に応じて新しいタイプの計算を追加できるようにしたいと考えています。 「AbstractCalculation」、この抽象クラスは、コードのどこでも使用されている「計算する」等のような方法によって: 新しい顧客の特定のクラスによるJavaアプリケーションの拡張?
は計算を実行するために、コア・アプリケーションは、抽象クラスを有しています。
@Entity
@Table “ALGO”
abstract class AbstractCalculation
(…)
その次に、このAbstractCalculationクラスを拡張コア具象クラスがあります。これらのクラスはまた、JPAエンティティ(単にクエリは計算に考慮されるべきであるすべてのクラスを返すことができます)
@Entity
@Table “ALGO_ONE”
class CalculateAlgorithmOne extends AbstractCalculation
(…)
@Entity
@Table “ALGO_TWO”
class CalculateAlgorithmTwo extends AbstractCalculation
(…)
されており、当然のことながら、これらのクラスは、アプリケーションpersistence.xmlので定義されています。
Mypackage.CalculateAlgorithmOne
Mypackage.CalculateAlgorithmTwo
このアプリケーションは、EARファイルとしてパッケージ化されています。
お客様が独自の第3の計算タイプをご紹介したいとお考えの場合は、コード などにはまだ存在しません。
MyCustomerCalculateAlgorithThree.
このクラスは、その顧客にのみ関連し、他の顧客には配信しないでください。
1/Weはソフトウェアベンダーとしてこの新しいクラスを組み込み、その顧客の特定のEARファイルを生成することができます。他の顧客はその新しいクラスのないEARファイルを保持します。 これは、多くの顧客をターゲットにしていないため、まだ管理しています(これは大規模な顧客にとって非常に特殊なアプリケーションです)。
2/EARファイルを変更せずにこの得意先クラスを含める方法はありますか?理想的には、私たちは新しいクラスを知ってはいけません。(調査/サポート目的のために離れているかもしれません) これは不可能です(すべてのクラスは同じEARの一部でなければなりません)?
3 /お客様がサードパーティのアプリケーションに独自のクラスを追加する方法について、他に提案やベストプラクティスはありますか?あなたのフィードバックを事前に
感謝
敬具、
ジョン
ありがとう - REST APIの場合:アプリケーションがお客様の特定のAPIをどのように「発見」する必要がありますか? – JohnSteed