私はOSGIセマンティックバージョニング(テクニカルホワイトペーパー)に精通しています。ただし、OSGIサービス用に提案されたバージョン管理の概念は見当たりません。
単純な状況:com.services.payments.PaymentServiceとして登録されたサービスを提供しています。これは、メソッドvoid makePayment(Integer amount、String accountNo)を実行し、バンドルバージョン1.0としてパックしています。次に、変更されたインターフェイスでサービスを更新します。このメソッドを削除し、新しいメソッドmakePaymentInDifferentWay(整数量、文字列accountNo)を追加し、新しいサービスをバンドルバージョン2.0としてパッケージ化します。最初のバンドルが停止した後、クライアントは2番目のサービスを配線し、クラッシュしますメソッドシグネチャはバイナリ互換ではないため、サービスの呼び出し時に。このような状況は、Javaパッケージを処理することで完全に解決されますが、OSGIサービスですぐに使用できるバージョン管理機能はありません。私は何かが足りないのですか?(「service.version」などのサービスプロパティを設定し、クライアント側でこのプロパティによって提供されるサービスをフィルタリングするか、APIパッケージまたはクラス名の名前を変更するだけで、バージョン管理スキームを事前に設計できることはわかっていますが、ボックスのバージョン管理が提供されないのはなぜですか?たぶん、他のもっと標準的な方法の解決策がありますか?たぶん、私が単に理解していなかったサービスに関連するいくつかの概念がありますか?)