2015-04-10 1 views
2

J'ai téléchargé le BlueMix Java SQLDB Boilerplate et je joue avec, en cherchant à étendre pour des tables supplémentaires, etc. Je suis un peu confus au 'autowiring' qui relie les services de base de données dans BlueMix à l'application au déploiement/runtime.Comment BlueMix exécute Autowiring pendant le déploiement?

A l'intérieur du passe-partout il y a une certaine configuration en persistence.xml qui dit:

<persistence-unit name="openjpa-todo"> 
     <!-- The cloudAutowiring-1.0 Liberty feature will resolve this to whatever 
      the database service name is --> 
     <!-- When running locally without this feature, create a datasource with 
      the JNDI name "jdbc/mydbdatasource" in server.xml --> 
     <!-- If using MySQL locally then use the "url" property and append "?relaxAutoCommit=true", for example: 
      <dataSource id='mysql-datasource' jdbcDriverRef='mysql-driver' jndiName='jdbc/mydbdatasource'> 
       <properties user='root' password='password' url="jdbc:mysql://localhost:3306/db?relaxAutoCommit=true"/> 
      </dataSource> --> 
     <jta-data-source>java:comp/env/jdbc/mydbdatasource</jta-data-source> 
     <class>example.jpa.TODO</class> 
     <properties> 
      <!-- allow table definitions/creation on-the-fly jpa-2.0 feature --> 
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" /> 
      <!-- allow table definitions/creation on-the-fly jpa-2.1 feature --> 
      <property name="eclipselink.ddl-generation" value="create-tables"/> 
     </properties> 
    </persistence-unit> 

Comment BlueMix/carte Liberté des services déployés à la JTA-données source/persistence-unit?

Y a-t-il des conditions ou des exigences qui doivent être remplies pour que l'autowiring ait lieu?

Répondre

4

En fait, c'est plutôt cool. Lors du déploiement de l'application, le buildpack vous permet de réaliser une logique supplémentaire. Il y a une certaine logique dans le buildpack de Liberty que les fils automatiques dans un couple de services. Surveillance et analyse, journalisation, pour n'en nommer que quelques-uns. Le noeud buildpack le fait aussi.

J'ai capturé une partie de l'autowiring ci-dessous.

2015-04-10T15:24:51.98-0400 [STG]  OUT -----> Liberty Buildpack Version: v1.15-20150402-1422 
2015-04-10T15:24:51.98-0400 [STG]  OUT -----> Retrieving IBM 7.1.2_sr2fp11ifx-20150312 JRE (ibm-java-jre-7.1-2.11-pxa6470_27sr2fp11ifx-20150312_01-sfj.tgz) ... (0.0s) 
2015-04-10T15:24:52.82-0400 [STG]  OUT   Expanding JRE to .java ... (0.8s) 
2015-04-10T15:24:52.82-0400 [STG]  OUT -----> Retrieving App Management Agent 2015.03.09_101422 (com.ibm.ws.cloudoe.app-mgmt-proxy-agent.zip) ... (0.0s) 
2015-04-10T15:24:52.92-0400 [STG]  OUT   Expanding App Management to .app-management (0.0s) 
2015-04-10T15:24:52.92-0400 [STG]  OUT -----> Retrieving com.ibm.ws.liberty-2015.3.0.0-201504021422.tar.gz ... (0.0s) 
2015-04-10T15:24:53.74-0400 [STG]  OUT   Installing archive ... (0.8s) 
2015-04-10T15:24:53.76-0400 [STG]  OUT -----> Retrieving com.ibm.ws.liberty.ext-2015.3.0.0-201504021422.tar.gz ... (0.0s) 
2015-04-10T15:24:54.15-0400 [STG]  OUT   Installing archive ... (0.3s) 
2015-04-10T15:24:54.33-0400 [STG]  OUT -----> Retrieving and installing client jar(s) from com.ibm.ws.icap.clientJars.cloudant.zip (0.1s) 
2015-04-10T15:24:54.34-0400 [STG]  OUT -----> Auto-configuration is creating config for service instance 'Cloudant NoSQL DB-wr' of type 'cloudantNoSQLDB' 
2015-04-10T15:24:54.36-0400 [STG]  OUT -----> Liberty buildpack is done creating the droplet 
2015-04-10T15:24:54.63-0400 [STG]  ERR 
2015-04-10T15:25:06.80-0400 [STG]  OUT -----> Uploading droplet (147M) 

Ce que recherchent les buildpacks, c'est des services liés à votre application. S'il existe des services liés tels que Cloudant ou Monitoring and Analytics, il ajoutera les ressources correctes. Pour Cloudant puisqu'il s'agit de JDBC, il créera la connexion JDBC pour vous.

De plus, le buildpack Liberty vous propose une configuration automatique pour les types de services suivants: Base de données SQL ClearDB MySQL Database MySQL ElephantSQL PostgreSQL Cloudant ™ NoSQL Database MongoLab dashDB données Cache session cache MQ lumière Surveillance et analyse-Auto Scaling Single Sign On New Relic

+1

Merci J'ai également trouvé quelques informations supplémentaires dans les docs - https://www.ng.bluemix.net/docs/#starters/liberty/index.html#automaticconfigurationofboundservices il définit une liste complète des services autowired comme: The Liberty buildpack fournit la configuration automatique pour les types de service suivants: Base de données SQL Base de données MySQL ClearDB MySQL ElephantSQL PostgreSQL Cloudant ™ NoSQL Database MongoLab dashDB données Cache session Cache MQ lumière Surveillance et analyse Auto-échelle Single Sign On New Relic – Craig

+0

a ajouté que la réponse de sorte qu'il peut être trouvé plus facile –

+1

Cloudant est pas compatible avec JDBC. Il propose une bibliothèque client pour Java qui utilise une API REST. La réponse devrait être corrigée car il est trompeur de croire que cloudant peut être configuré comme une source de données avec le serveur d'application via JDBC/JPA. –