OSGi にサービス バージョンの実際の概念があるとは思いませんが、サービスを登録するときに好きなキーと値のペアを使用できます。Knopflerfishのチュートリアルはかなり良いと思います。
たとえば、サービスを登録する場合:
Hashtable props = new Hashtable();
props.put("version", "1.0");
bundleContext.registerService(ServiceInterface.class.getName(), impl, props);
次に、サービスを利用するときに、これらの属性を使用して特定の属性を要求できます。
このサービスの複数のバージョンを持つことは非常に簡単ですが、注意が必要な部分は、サービスの利用者がそれをどのように扱うかです。
バージョン 1.0 を使用している 2 つのコンシューマーがあり、1.1 が表示された場合 (たとえば、新しいバンドルが開始された場合)、コンシューマーは 1.0 の使用を停止し、1.1 の使用を開始する必要がありますか? あなたの例では、消費者の 1 人はこれを無視し、もう 1 人は 1.1 に再配線する必要があります。これは、1 人の消費者が複数のサービスを利用する場合に特に複雑になります。
宣言型サービスを検討することをお勧めします。これにより、これがはるかに簡単になり、コードがきれいに保たれます。ここから始めることをお勧めします