{"id":3228,"date":"2016-06-03T10:05:07","date_gmt":"2016-06-03T09:05:07","guid":{"rendered":"http:\/\/iamwcew.fr.oracle.com\/blog\/?p=3228"},"modified":"2016-06-03T10:05:07","modified_gmt":"2016-06-03T09:05:07","slug":"oracle-container-cloud-service","status":"publish","type":"post","link":"https:\/\/gpmfactory.com\/index.php\/2016\/06\/03\/oracle-container-cloud-service\/","title":{"rendered":"Oracle Application Container Cloud Service"},"content":{"rendered":"<h3>Intro<\/h3>\n<p>Ce sont des note de travail sur une premi\u00e8re prise de contact avec Oracle Application Container Cloud Service (Oracle ACCS\/Node).<\/p>\n<p>Oracle ACCS propose deux types de containers applicatifs:<\/p>\n<ul>\n<li>Java SE (Java)<\/li>\n<li>Node.js (Javascript)<\/li>\n<\/ul>\n<p>Ce post concerne Node.js.<\/p>\n<p>On d\u00e9ploie une application Javascript comme si on travaillait avec un serveur d&rsquo;application, mais avec un niveau de cloisonnement plus pouss\u00e9.<\/p>\n<h3>Pr\u00e9requis<\/h3>\n<p>Suivre le tutorial:\u00a0<a href=\"http:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/cloud\/apaas\/node-basicRest\/nodecloud-REST.html#summary\">Developing a RESTful Node.js and HTML5 application to Oracle Application Container Cloud Service<\/a><\/p>\n<p>Il s&rsquo;agit d&rsquo;une application qui liste des sujets et qui permet d&rsquo;en ajouter ainsi que des commentaires.<\/p>\n<p>Il y a, \u00e0 cot\u00e9, une page html (index.html) qui fait des appels \u00e0 cette application.<\/p>\n<p>Pour info: Oracle ACCS propose une application sample d\u00e9j\u00e0 install\u00e9e sur le serveur. Cette application est instanciable lors de la cr\u00e9ation d&rsquo;une nouvelle appli.<\/p>\n<h3>D\u00e9veloppement et test en local<\/h3>\n<p>Pour tester le fonctionnement, avant de d\u00e9ployer sur Oracle ACCS, il faut installer node.js sur son PC et suivre le tutorial.<\/p>\n<p>Optionnel: Pour inclure des appels REST vers d&rsquo;autres services, il faut utiliser le module <em>require<\/em>.<\/p>\n<p style=\"padding-left: 30px;\">Avant de lancer la commande node server.js, il faudra positionner la variable NODE_PATH \u00e0 la valeur suivante:<br \/>\nset NODE_PATH=C:\\Users\\&lt;USERNAME&gt;\\AppData\\Roaming\\npm\\node_modules<\/p>\n<p>Le r\u00e9sultat ressemble \u00e0 :<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02335.jpg\" rel=\"attachment wp-att-3234\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3234 size-medium\" src=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02335-300x215.jpg\" alt=\"snap02335\" width=\"300\" height=\"215\" \/><\/a><\/p>\n<h3>D\u00e9ploiement<\/h3>\n<p>Un fois que c&rsquo;est v\u00e9rifi\u00e9:<\/p>\n<ul>\n<li>Bien v\u00e9rifier la variable port et la fixer \u00e0 la valeur suivante:\n<pre>var PORT = process.env.PORT || 80;<\/pre>\n<\/li>\n<li>on fabrique un .zip avec l&rsquo;application node (server.js + un fichier Manifest)<\/li>\n<li>On se connecte \u00e0 Oracle ACCS et on cr\u00e9e une nouvelle application de type Node.js en chargeant le fichier zip pr\u00e9c\u00e9dent.<\/li>\n<li>On r\u00e9cup\u00e8re l&rsquo;adresse et on met \u00e0 jour la page HTML pour pointer vers l&rsquo;adresse de l&rsquo;application.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02333.jpg\" rel=\"attachment wp-att-3229\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3229 size-large\" src=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02333-1024x562.jpg\" alt=\"snap02333\" width=\"720\" height=\"395\" \/><\/a><\/p>\n<p><a href=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02334.jpg\" rel=\"attachment wp-att-3230\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3230 size-full\" src=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2016\/06\/snap02334.jpg\" alt=\"snap02334\" width=\"748\" height=\"411\" \/><\/a><\/p>\n<h3>Test du bon fonctionnement<\/h3>\n<p>Soit on d\u00e9clenche\u00a0la page index.html dans un browser, soit on appelle directement l&rsquo;URL\u00a0<a href=\"https:\/\/testpmo-gse00000405.apaas.em2.oraclecloud.com\">https:\/\/testpmo-gse00000405.apaas.em2.oraclecloud.com<\/a><br \/>\nObserver que l&rsquo;URL est pr\u00e9fix\u00e9e par le nom que l&rsquo;on donne \u00e0 l&rsquo;application lors de sa cr\u00e9ation<\/p>\n<p>Conclusion: <strong>c&rsquo;est extr\u00eamement simple \u00e0 d\u00e9ployer !<\/strong><\/p>\n<h3>Avantages pour l&rsquo;appel de service REST<\/h3>\n<p>L&rsquo;application est directement accessible en\u00a0SSL.<\/p>\n<p>On peut d\u00e9velopper en Javascript et \u00a0\u00e9chapper aux contraintes de <em>Cross Origin Domain<\/em> puisque les appels REST vers d&rsquo;autres services se feront depuis un serveur et non pas depuis un browser. cela est particuli\u00e8rement vrai pour les services REST qui ne sont pas encore <em>CORS enable<\/em>.<br \/>\n(pour info: Les APIs de Oracle Documents Cloud Service sont d\u00e9sormais CORS <em>enable <\/em>depuis cet \u00e9t\u00e9 2016<em>)<\/em><\/p>\n<p>A tester: Il faut v\u00e9rifier comment les applications Node interagissent avec l&rsquo;identity Domain. Est-ce que l&rsquo;on peut utiliser l&rsquo;authentification native du <em>tenant<\/em> et r\u00e9cup\u00e9rer , au niveau de l&rsquo;application, le user connect\u00e9 ?<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro Ce sont des note de travail sur une premi\u00e8re prise de contact avec Oracle Application Container Cloud Service (Oracle ACCS\/Node). Oracle ACCS propose&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7,22,10],"tags":[],"ppma_author":[150],"class_list":["post-3228","post","type-post","status-publish","format-standard","hentry","category-demo-2","category-dev","category-francais","category-notes"],"authors":[{"term_id":150,"user_id":1,"is_guest":0,"slug":"admin8700","display_name":"Patrick","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/209d5ed69b74d288390621ab4c1d3773?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/3228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/comments?post=3228"}],"version-history":[{"count":0,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/3228\/revisions"}],"wp:attachment":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/media?parent=3228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/categories?post=3228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/tags?post=3228"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/ppma_author?post=3228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}