12
votes

Quoi de neuf à Osgi 4.2?

OSGI 4.2 a vient d'être publié qui met à jour la spécification 4.1 avec quelques nouvelles RFC. Donc, ce qui est particulièrement nouveau avec OSGI 4.2, quels cadres prennent en charge 4.2 déjà (ou sont proches de) et pourquoi devriez-vous cibler de nouveaux développements contre un cadre 4.2 au lieu d'un 4.1?


0 commentaires

4 Réponses :


0
votes

Cet article détaille les RFC d'intérêt. Pour citer,

Tout d'abord, il faut noter que Ce n'est pas une libération mineure comme le Le numéro de version peut suggérer. Libérer 4.2 est réellement plus important que la version R4.1 l'année dernière. À certains points que je dirais même que c'est plus important que la libération R4, parce que avec cette utilisation devient bien plus facile, surtout pour aucun Experts OSGI.


1 commentaires

Je suis d'accord, même si certaines des RFC (comme les entreprises) ne sont pas encore complètes.



1
votes

Les premiers changements étaient surligné ici .

En particulier, la fonctionnalité OSGI distribuée RFC 119 est intéressante:

Cette solution définit un niveau minimal de fonctionnalité / fonction pour le traitement de l'OSGI distribué, y compris la découverte de service et l'accès à des environnements externes.

qui combiné avec EventAdmin (introduit en 41) permettra de faciliter la mise en œuvre des services distribués basés sur l'OSGI (actuellement implémenté avec ECF )


1 commentaires

Ouais, les services à distance (comme étant distribué OSGI est maintenant appelé) est intéressant. Il y a une bonne rédaction à wiki.eclipse.org/... sur la façon d'utiliser généralement les services distants avec ECF pour l'un de vos propres -



12
votes

Dans la plupart des cas, une version ponctuelle d'OSGI (telle que 4.1-> 4.2) ne change pas vraiment beaucoup de comportement existant. Il est donc prudent de dire que si vous avez une application qui dépend du 4.1, ça va courir sur 4.2 Sans problème. Ce qui est nouveau, c'est que quelques éléments ont été standardisés, ce qui devrait permettre une meilleure interopérabilité entre différents moteurs OSGI (comme Equinox , Felix et Knopflerfish ).

En fait, bien que OSGI 4.2 n'était officiellement disponible officiellement le 16 septembre 2009, les premiers versés ont été disponibles pour que d'autres se réfèrent, de sorte que les versions précédentes des produits (comme Equinox 3.5, Felix 1.8) ont déjà un soutien raisonnable pour la la norme. Comme des produits 802.11n, ils sont conformés aux brouillons antérieurs, mais l'attente est qu'elles seront certifiées entièrement conformes à la version 4.2 dans le futur non trop éloigné.

Alors, quoi de neuf en 4.2?

  • crochets de service
  • cadre de lancement

    et, dans le Compendium

    • SERVICES REMOTE
    • Bundle Tracker
    • SERVICE PLUBLEPRINT

      crochets de service

      L'API Hook Service vous permet de récupérer des événements qui se produisent à la couche de service. Par exemple, vous pouvez vous connecter lorsqu'un service est demandé lorsqu'un service a fourni un événement livré, etc. Vous pouvez également causer des événements non livrés (par exemple, cacher des événements que vous n'êtes pas autorisé à voir) mais ne peut modifier aucun événement (car cela compliquerait les classes étant livrées). Les crochets de service font partie de la spécification de base, de sorte que toutes les versions OSGI auront besoin que cela soit conforme.

      cadre de lancement

      Bien qu'il soit possible de démarrer de manière programmée une instance OSGI à partir d'une application Java existante, la manière dont vous effectuez cela dépend de laquelle vous utilisez l'exécution OSGI. En particulier, les éléments de configuration (tels que le stockage des données transitoires, quelle que soit la politique de la délégation de démarrage de l'ensemble, etc.) étaient toutes définies de manière spécifique à un moteur. Cela consolide les propriétés qui sont définies sur le cadre par n'importe quel utilitaire de lancement.

      Services distants

      L'API de services à distance permet aux services OGSI de communiquer entre VMS (éventuellement sur différentes machines). Le mécanisme exact de la manière dont ils communiquent (RMI, Webservices, etc.) sont ouverts aux fournisseurs. Il est donc différent de ce que les autres technologies distribuées (telles que corba) dictent spécifiquement sur le format du fil. De toute évidence, les services distribués ont une sémantique différente de celle locale (erreurs de communication, problèmes de sérialisation) et il est laissé aux services individuels à distribuer si nécessaire.

      Bundle Tracker

      J'aime le serviceTracker avant son entrée en 4.1, le BundeLracker peut être utilisé pour garder un œil sur lequel les faisceaux venaient et vont dans le système. Ceci peut être utilisé par des Guis dynamiques pour montrer l'état évolutif du moteur OSGI sans aucune connaissance spécifique de la plate-forme.

      SERVICE DE RLUPHIPT

      Le service de planimint est similaire au ressort, car il fournit un mécanisme d'injection de dépendance pour la configuration des paquets. À certains égards, il est similaire aux services déclaratifs; Mais le service de plans fait les choses de manière différente. En outre, contrairement aux services déclaratifs (qui ne peuvent traiter que des services présents), le service de planimint peut créer un espace porteur proxy à l'avance pour un service qui sera en ligne plus tard. Les appels vers le proxy de service bloqueront ensuite jusqu'à ce que le service puisse être rempli (plutôt que de renvoyer «NULL» à titre de services déclaratifs). Si vous êtes à l'aise ou familiarisé avec le Spring IOC et l'injection de dépendance similaire, le service de planimint sera immédiatement compréhensible.


1 commentaires

NB Ce n'est pas nécessairement une liste complète et ne couvre pas certaines des modifications apportées aux services existants ...



0
votes

Les services déclaratifs renvoient-ils réellement NULL lorsqu'une liaison de référence n'est pas disponible? Sur Equinox, même si je définissais le mode sur dynamique, mon composant n'est jamais instancié s'il ne peut pas être "câblé". Je préférerais préférer qu'il soit réglé sur "NULL" comme vous le dites, afin que je puisse avoir une référence facultative lie et utilisez la découverte dynamique ...

En outre, la possibilité de trouver facilement les propriétés du composant lorsqu'un service est lié (je dois aller au contexte du paquet, obtenir des références de service, itérer et comparer - non pratiques). Peut-être que je manque quelque chose.


1 commentaires

Vous pouvez définir la cardinalité = "0..1" ou "0..n" dans la spécification déclarative, auquel cas il est facultatif et que le composant peut donc être démarré même si un service dépendant n'est pas disponible.