J'apprends OSGi et je suis curieux de connaître la situation suivante:Comment puis-je mettre à jour les interfaces dans OSGI?
Je veux changer (étendre surtout) une interface exposée par OSGi, sans changer le nom de la classe. Est-il possible de faire un bundle qui "traduit" l'ancienne interface à la nouvelle. Ci-dessous est un exemple, j'espère que c'est assez clair, juste en utilisant quelques en-têtes manifestes. Supposons que j'ai ces faisceaux OSGI:
Bundle-Name: Example Iface1 Implementation
Import-Package: org.osgi.framework
Export-Package: example.interfaces;version="1.0"
Bundle-Name: Example Iface1 User
Import-Package: org.osgi.framework, example.interfaces;version="1.0"
Mais je dois mettre à jour l'interface exposée (s). Les noms de classe d'interface restent les mêmes, mais des fonctionnalités leur sont ajoutées. Je crée:
Bundle-Name: Example Iface2 Implementation
Import-Package: org.osgi.framework
Export-Package: example.interfaces;version="2.0"
Puis-je faire un bunlde comme celui-ci pour traduire la nouvelle interface à l'ancienne pour les paquets qui en ont besoin?
Bundle-Name: Interface Translator
Import-Package: org.osgi.framework, example.interfaces;version="2.0"
Export-Package: example.interfaces;version="1.0"
Parce que dans ce cas, je ne sais pas comment faire les importations en java ...
Ou est-il une meilleure façon de faire face à cette situation dans OSGi?
Je ne connaissais pas les versions sémantiques. Cela offre une bonne approche dans la plupart des cas! Cependant, je me demande toujours s'il y a un moyen de "traduire" entre les changements de versions majeures. De tels changements sont rétrocompatibles, mais il pourrait y avoir un moyen de contourner cela. –