Développement OSGi pour serveur Karaf
Transcription
Développement OSGi pour serveur Karaf
Développement OSGi pour serveur Karaf – Part 3 Dans la partie 2, nous avons commencer à mettre en place une application de vente/échange de spiritueux et de vins qui va nous servir de support le la suite des opérations. Cette partie va concerner le module persistance. En effet, pour le moment, notre sauvegarde de données se fait dans une ArrayList ; niveau persistance on a déjà vu mieux! C’est pourquoi nous allons, dans cette partie, mettre en place une solution de type base de données. Personnellement en ce moment, j’aime beaucoup les base de données de type document , mais pour les besoin de l’exemple je vais utiliser une base de données “classique” du genre Oracle, mySQL, postgres, derby, hsql et consorts. La source de données Lorsque dans un serveur J2EE classique nous utiliserions un connecteur JNDI pour se coupler à la DataSource, dans un serveur OSGI nous allons utiliser un service OSGI … normal ! La création de notre DateSource va être simplifiée par l’utilisation de blueprint encore une fois. La définition du DataSource va se faire par la création d’un bean implémentant l’interface “javax.sql.DataSource “corespondant à la base de données que vous souhaitez attaquer. Puis une fois ce bean créer, nous exposerons un service répondant à l’interface “javax.sql.DataSource” et référençant notre bean et lui donnant un p’tit nom à la JNDI. Dans l’exemple nous allons utiliser une base full Java nommé H2. Dans karaf, il ne faut pas oublier que les applications n’emportent pas leurs dépendances – et cela vaut aussi pour le drivers de base de données – et qu’il faudra donc installer le drivers dans karaf. Afin de vous laisser le choix des armes voici une liste des dépendances utilisables pour quelques bases couramment rencontrées : Base de données DB2 DERBY H2 HSQL MYSQL Installation des dépendances dans Karaf mvn install:install-file -DgroupId=com.ibm.db2.jdbc -DartifactId=db2jcc Dversion=10.1 -Dpackaging=jar -Dfile=”C:\Program Files (x86)\IBM\SQLLIB\java\db2jcc.jar” install -s mvn:org.apache.derby/derby/10.10.1.1 install -s mvn:com.h2database/h2/1.3.170 install -s mvn:org.hsqldb/hsqldb/2.2.9 install -s mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.staxapi-1.2/2.2.0install -s mvn:mysql/mysql-connector-java/5.1.24 ORACLE mvn install:install-file Dfile=”C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar” DgroupId=ojdbc -DartifactId=ojdbc -Dversion=11.2.0.2.0 -Dpackaging=jar POSTGRES install -s wrap:mvn:postgresql/postgresql/9.1-901-1.jdbc4 Plus tard, nous utiliserons les facilités offertes par le fichier features.xml qui permettera de faciliter la “mise en production”. L’installation de la dépendance pour H2 se fera donc de la façon suivante : 1 Une fois le driver de base de données installé, il nous faut créer notre service permettant d’interagir avec la base. Comme nous l’avons vue dans la partie précédente créer un service n’est pas chose compliquée et pour preuve voici le code pour notre service de base de données : 1 Une fois ce fichier XML défini nous avons en notre possession une data source définie par les critères suivant : Base de données : H2 Nom de base : cellar_bd User : john Password : doe Nom d’exposition du service d’accès : jdbc/cellar_bd Maintenant la question est simple: comment l’utiliser ? JDBC ou JPA ? Avec quel framework OpenJPA, Hibernate ou autres ? Les possibilités sont assez variées, certaines très simples d’autres beaucoup plus complexes ! Allez on se connecte ! Nous allons commencer par la base, c’est à dire la mise en place d’une interaction avec la base utilisant JDBC. Dans la partie 2, nous avions défini une classe SpiritServiceImpl dans le bundle persistence. Cette classe possédait une ArrayList en guise d’élément de persistance ; Le but du jeu va être de remplacer cette liste par une vraie base de données. Dans le but de faire à peu près correctement les choses, nous allons remplacer les opérations sur la liste de spirit par un objet de type DAO que j’appellerai sans surprise … SpiritService. 1 Remarque : Ce DAO vérifie à sa création si la table CELLAR existe, dans le cas contraire le DAO crée cette table. Au passage, on pousse quelques informations dedans afin de vérifier le bon fonctionnement de notre application. Si vous souhaitez vérifier que la base est bien créée et bien peuplée vous pouvez vous connecter à la base avec un logiciel tel que l’excellent SQuirreL. L’utilisation de cette DAO à partir de notre service passera par une injection utilisant la capacité IOC de blueprint. Nous modifierons le fichier persistence.xml pour construire le DAO et le pousser vers le service. Au passage, un va injecter la DataSource dans le DAO : 1 Le Service s’en trouve simplifié : 1 Installation facile Au début de ce post, nous avons vu que pour utiliser notre base de données il fallait installer le driver sur karaf. C’est rapide, facile mais le développeur peut encore faciliter la manipulation au client final. Pour ça on retourne sur notre fichier features.xml dans le projet spout-feature afin d’ajouter tout simplement le driver ou tout autre dépendance nécessaire. 1 Et voila c’est tout ! L’installation se ferra ainsi en une fois sans se poser de question sur les dépendances à installer à coté. JDBC c’est bien mais après … Il est toujours un peu fastidieux de travailler avec le JDBC surtout dans le cas de CRUD simpliste qui peuvent être facilités par tout ORM qui se respecte. C’est pourquoi la prochaine fois on ira voir du coté de JPA. On se ferra aussi un petit module afin de tester l’insertion de donner et pour cela nous utiliserons une des facilitées liée à karaf … l’extension de shell. Lecture - "Enterprise Games" de Michael HUGOS aux éditions O'REILLY J’ai commencé un livre qui m’a été conseillé, ENTERPRISE GAMES : Using Game Mechanics to Build a Better Business. Ce livre est une étude sur le management de projet et comment améliorer la conduite de projet avec des techniques modernes de jeux. On ne parle pas ici de jeux dans le monde du travail (serious gaming) ni de jeux à des fins commerciales, même si cette étude ne serait pas complète sans passer un minimum dessus. On l’entend quand même citer Ian BOGOST – “Gamification is Bullshit”. Dilbert – http://www.dilbert.com/2013-05-19/ de Scott ADAMS Michael HUGOS – l’homme derrière la plume Michael HUGOS est l’auteur de ce livre. Il a travaillé comme directeur des systèmes d’information avec plusieurs (parfois gros) clients pour trouver des solutions élégantes à des problèmes complexes. Pour ses travaux il a remporté plusieurs prix comme le CIO 100 Award, le InformationWeek 500 Award et le Premier 100 Award. Il a écrit des articles pour un magazine “Doing Business in Real Time”. Il est l’auteur de 7 livres dont le populaire “Essentials of Supply Chain Management”. Enterprise Games: Using Game Mechanics to Build a Better Business – couverture Sa vision du jeu (dans le monde du travail) Le monde progresse et le travail progresse en même temps. Les technologies entrent dans la vie active. Michael HUGOS pense qu’ignorer ces changements et les possibilités qui vont avec, sont autant d’opportunités ratées et d’avantages laissés aux adversaires. Michael HUGOS s’inspire des jeux actuels, notamment des MMORPG et a identifié 4 piliers qui sont applicables dans le management des systèmes d’information. Il réfute les systèmes comme le travail à la chaîne et le cloisonnement des informations de la société qu’il juge dépassés et encombrants. Les nouveaux médias qui sont apparus, les progrès en télécommunications, l’accès à internet plus répandu sont autant d’outils et de points clefs qui nous obligent à revoir notre façon de travailler. Et pour ceux qui ne le font pas, la concurrence le fera. Il est temps de sauter à bord, le train est déjà en marche. les 4 pilliers Michael HUGOS nous présente tout au long de son ouvrage 4 piliers pour améliorer le workflow d’un projet. Ces 4 piliers sont les fondements des jeux (en general). the Goals – les objectifs Les objectifs doivent être définis. Il est important que tous les membres du projet sachent ce qu’on leur demande et sur quels critères on évalue le succès du projet. De plus compléter ces objectifs doit être positif, améliorer l’entreprise et améliorer leur quotidien. Il faut impliquer les employés. the Rules – les règles Les règles sont les outils et méthodes utilisables pour réaliser et atteindre les objectifs. Il ne faut pas hésiter à voir large. Il est important de laisser de la marge de manoeuvre aux employés et de leur donner un maximum de visibilité et de pouvoir pour accomplir leurs objectifs. Les employés seront plus concernés et plus motivés. the Feedback – le retour d’informations Le feedback est sans doute le point le plus important de ces 4 piliers. Ce point découle de l’avancée des nouvelles technologies et les moyens de communication moderne. En effet, avec les smartphones et les progrès d’internet, beaucoup de gens sont en connexion permanente. Un accès au feedback, en temps réel, partout et pour tous est la clef de la responsabilisation des employés et de la confiance qu’on leur apporte. Le feedback doit présenter à tous les employés : où ils en sont par rapport au objectifs, où en est le projet en général par rapport aux objectifs, où en sont les autres par rapport aux objectifs. Dans son livre, Michael HUGOS parle de faire passer l’employé de simple engrenage à membre de l’équipe à part entière. the Participation – la participation Enfin, le dernier pilier présenté par Michael HUGOS, la participation doit être volontaire. Une participation obligatoire va à l’encontre de la responsabilisation et de la prise d’importance de l’employé. Si votre nouveau système est vraiment meilleur, les gens migreront d’eux même sans réticences. Sinon, leur critiques seront votre feedback pour proposer mieux. Pourquoi lire ce livre ? Le constat de l’évolution de l’entreprise et de notre société est grave et des solutions commencent à émerger. Même si la vision de Michael HUGOS ne vous convient pas, la réflexion sur l’état des choses est important et un exemple des solutions à venir est intéressant à observer. Selon Michael HUGOS, les entreprises sont de moins en moins attachées à leur employés. Il en découle que les employés sont de moins en moins attachés à leur entreprise. Si les employés ne sont pas mieux valorisés, ils seront sous productifs ou partiront vers des entreprises qui leur feront plus confiance. Au travers d’exemples et de réflexions personnelles sur ses projets, Enterprise Games, présente une voie d’avenir qu’on aurait tort de se priver d’explorer.