{"id":7107,"date":"2014-06-11T05:55:40","date_gmt":"2014-06-11T12:55:40","guid":{"rendered":"http:\/\/localhost\/exoblog\/?p=7107"},"modified":"2023-06-05T16:49:19","modified_gmt":"2023-06-05T14:49:19","slug":"deploying-exo-platform-jboss-domain-mode","status":"publish","type":"post","link":"https:\/\/www.exoplatform.com\/blog\/deploying-exo-platform-jboss-domain-mode\/","title":{"rendered":"Deploying eXo Platform 4 to JBoss EAP 6.1 in Domain mode"},"content":{"rendered":"<p>The JBoss AS 7 \/ EAP 6, has introduced a new deployment mode named domain. This mode aims to ease the configuration and management of several JBoss instances. The difference between the classic standalone mode and domain mode is that the latter allows centralization of the configuration and deployment in one unique point.<\/p>\n<p><!--more--><\/p>\n<p>So when do we need to use JBoss in domain mode?<\/p>\n<p>We need to use it if we deal with multiple JBoss servers for one or multiple applications in our infrastructure. For example, if we are using eXo in cluster mode, we can use JBoss domain mode to ease the configuration and deployment, so that we have only one entry point for configuring and managing all JBoss servers.<\/p>\n<p><b>example domain deployment<\/b>:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-7109\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement.png\" alt=\"01-diagram-ex-domain-deployement\" width=\"650\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement.png 919w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-300x117.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-768x298.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-720x280.png 720w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-500x194.png 500w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-360x140.png 360w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-200x78.png 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-100x39.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/01-diagram-ex-domain-deployement-70x27.png 70w\" sizes=\"(max-width: 919px) 100vw, 919px\" \/><\/a><\/p>\n<p>A domain mode architecture will contain:<\/p>\n<ul>\n<li>A domain controller: This is a light JVM JBoss server that will distribute the configuration and deployments to inject into each JBoss server instance. An application cannot be deployed\/started on this JVM; it exposes a Web management interface to see\/modify configurations and assign applications (EAR, WAR, modules) into each JBoss Server.<\/li>\n<\/ul>\n<ul>\n<li>A host controller per OS instance (VM or physical machine): This is a light JVM that will be deployed on each host (OS+Hardware) and acts like a bridge to allow the domain controller to manage JBoss servers instantiated in the local machine. The configuration of this JVM takes place in a local file named <span class=\"navCode\">host.xml<\/span>. The domain controller address and the JBoss server(s) to start locally are defined in this configuration file.<\/li>\n<\/ul>\n<ul>\n<li>A JBoss Server instance: Each host\/machine can have one or more JBoss Servers, which need to be associated to the local host controller. The JBoss server instance cannot contain locally deployed applications or a configuration file. Everything has to be controlled using the domain controller UI, JBoss Cli, or XML files. Some &#8220;default configurations&#8221; can be provided for the <span class=\"navCode\">domain.xml<\/span> configuration file, but the evolution\/improvements on this configuration file have to be performed using the &#8220;Web management interface&#8221; or JBoss Cli, similar to IBM Websphere (which also provides both methods; the xml manual modifications are not supported by IBM. RedHat has copied this feature from IBM Websphere).<\/li>\n<\/ul>\n<p>In fact, the standalone configuration file <span class=\"navCode\">standalone.xml<\/span> and list of applications deployed are managed and modified in a local folder inside the JBoss. In domain mode, the configuration (connectors, datasources, security-domain, ejb, system variables, etc.) is added in one file named <span class=\"navCode\">domain.xml<\/span>. This file will be used to describe the configuration profiles and deployments added to each server group (Attention: The server group notion is a logical way of denoting that <i>N<\/i> servers have the same configuration entries and deployments. It is not the same as servers controlled by one host controller).<\/p>\n<p>A complete explanation can be found in this documentation.<\/p>\n<h2>eXo Context<\/h2>\n<p><b><i>What the Standalone package contains:<\/i><\/b><\/p>\n<ul>\n<li><span class=\"navCode\">platform.ear<\/span> (folder with applications and modules)<\/li>\n<li><span class=\"navCode\">standalone.sh<\/span> &amp; co (<span class=\"navCode\">standalone-customize.sample.conf<\/span> &amp; <span class=\"navCode\">standalone.conf<\/span>): For some JVM essential variables, such as profiles, xmx, xms, etc.<\/li>\n<li><span class=\"navCode\">standalone.xml<\/span>: to configure JCR &amp; IDM Datasources and<\/li>\n<li>GateIn external configuration folder <span class=\"navCode\">gatein\/conf<\/span><\/li>\n<li>extensions folder: acme, cmis, etc.<\/li>\n<\/ul>\n<p><b><i>What is the difference with Domain mode packaging:<\/i><\/b><\/p>\n<ul>\n<li><span class=\"navCode\">platform.ear<\/span>: Has to be an archive not a folder<\/li>\n<li><span class=\"navCode\">standalone.sh<\/span> &amp; co: All system variables have to be added in <span class=\"navCode\">domain.xml<\/span><\/li>\n<li>GateIn external configuration folder: No change (This folder has to be copied in each host controller configuration folder)<\/li>\n<li>extensions folder: Provides a script that repackages the <span class=\"navCode\">platform.ear<\/span> to add one or more extensions.<\/li>\n<\/ul>\n<h2>eXo in domain mode<\/h2>\n<h3>Deployment to implementation<\/h3>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-7110\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement.png\" alt=\"02-deployment-to-implement\" width=\"231\" height=\"451\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement.png 231w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-154x300.png 154w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-168x328.png 168w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-121x236.png 121w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-67x131.png 67w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-46x90.png 46w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/02-deployment-to-implement-15x30.png 15w\" sizes=\"(max-width: 231px) 100vw, 231px\" \/><\/a><\/p>\n<p>Follow these steps to get eXo Platform running in domain mode:<\/p>\n<h3>1 \u2013 Install eXo in Jboss EAP:<\/h3>\n<ul>\n<li>Extract <span class=\"navCode\">platform-4.0.x-jboss.zip<\/span><\/li>\n<li>Merge the content with Jboss EAP: This will add files in <span class=\"navCode\">JBOSS_HOME\/bin<\/span> and <span class=\"navCode\">JBOSS_HOME\/standalone<\/span> and create an extension folder in the root<\/li>\n<li>Extensions are installable with extension.[sh|bat]copy eXo_domain folder in JBOSS_HOME.<\/li>\n<\/ul>\n<h3>2 \u2013 Copy <span class=\"navCode\">eXo-domain.xml<\/span> &amp; <span class=\"navCode\">eXo-host.xml<\/span> in <span class=\"navCode\">JBOSS_HOME\/domain<\/span><\/h3>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/03.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-7111\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/03.png\" alt=\"03\" width=\"650\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03.png 1123w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-300x128.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-1024x437.png 1024w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-768x328.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-720x307.png 720w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-500x213.png 500w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-360x154.png 360w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-200x85.png 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-100x43.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/03-70x30.png 70w\" sizes=\"(max-width: 1123px) 100vw, 1123px\" \/><\/a><\/p>\n<p>Archive (<a href=\"https:\/\/www.exoplatform.com\/?utm_source=BlogEn&amp;utm_medium=Blog&amp;utm_campaign=Content&amp;utm_content=link\">download<\/a>) contains a shell script to start\/stop an eXo cluster in domain mode.<\/p>\n<p>Edit the script to match your settings:<\/p>\n<pre class=\"lang:default decode:true \">JBOSS_USER=\nSTARTUP_WAIT=5\nSHUTDOWN_WAIT=5\nJBOSS_HOME=\nJBOSS_CONSOLE_LOG=$JBOSS_HOME\/eXo_domain\/log\/console-stdout.log\nJAVA_HOME=\/usr\/java\/default\nJBOSS_PIDFILE=$JBOSS_HOME\/eXo_domain\/tmp\/jboss_dc.pid\nJBOSS_CONFIG=eXo-domain.xml\nHOST_CONFIG=eXo-host.xml\nNOPAUSE=true\nIP_ADDR=\nJBOSS_SCRIPT=\"$JBOSS_HOME\/bin\/domain.sh -b $IP_ADDR -bmanagement $IP_ADDR host-config=$HOST_CONFIG -Djboss.domain.base.dir=$JBOSS_HOME\/eXo_domain -Djboss.domain.master.address=$IP_ADDR\"<\/pre>\n<h3>3 \u2013 Edit <span class=\"navCode\">JBOSS_HOME\/eXo_domain\/configuration\/eXo-domain.xml<\/span><\/h3>\n<ul>\n<li>Update the data sources section to meet your environment settings<\/li>\n<li>Update the system properties to match your needs<\/li>\n<li>Update any path you may need to customize and choose exo.profiles.<\/li>\n<\/ul>\n<h3>4 \u2013 Under <span class=\"navCode\">JBOSS_HOME\/eXo_domain\/servers\/<\/span><\/h3>\n<p>Create a directory named &#8220;autonomous-eXo-instance-1&#8221; to match the name used in <span class=\"navCode\">eXo_host.xml<\/span>.<\/p>\n<p>This directory contains per instance configuration files (gatein configuration folder), instance log files, tmp and data folders.<\/p>\n<h3>5 \u2013 Add database driver as jboss module:<\/h3>\n<p>create a jboss module referencing your database driver. The following example is for Mysql.<\/p>\n<p><span class=\"navCode\">JBOSS_HOME\/modules\/system\/layers\/base\/com\/mysql\/main\/module.xml<\/span><\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;module name=\"com.mysql\"&gt;\n&lt;\/properties&gt;\n&lt;resources&gt;\n&lt;resource-root path=\"mysql-connector-java-5.1.26-bin.jar\"\/&gt;\n&lt;\/resources&gt;\n&lt;dependencies&gt;&lt;module name=\"javax.api\"\/&gt;&lt;module name=\"javax.transaction.api\"\/&gt;\n&lt;\/dependencies&gt;\n&lt;\/module&gt;\n<\/pre>\n<h3>6 \u2013 Start jboss:<\/h3>\n<p><span class=\"navCode\">JBOSS_HOME\/eXo_domain\/eXo_dc.sh start<\/span><\/p>\n<h3>7 \u2013 Access to Jboss Web console:<\/h3>\n<p>(default port is 9990)<br \/>\n(user and password are stored in <span class=\"navCode\">mgmt-users.properties<\/span> and created by <span class=\"navCode\">JBOSS_HOME\/bin\/add-user.sh<\/span>)<\/p>\n<h3>8 \u2013 Deploy <span class=\"navCode\">platform.ear<\/span>:<\/h3>\n<p><span class=\"navCode\">platform.ear<\/span> is the main EAR delivered by eXo. It may contain a custom extension.<br \/>\nIt contains all WAR, JAR and descriptors.<br \/>\nTo deploy an EAR, two methods can be used:<\/p>\n<p><b><i>method 1: Deploy <span class=\"navCode\">platform.ear<\/span> using the WebConsole<\/i><\/b><\/p>\n<p>Click on manage deployments and select your <span class=\"navCode\">platform.ear<\/span> archive<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/03.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-7111\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/04-ear.png\" alt=\"04-ear\" width=\"650\"><\/a><\/p>\n<p>Click on next then save.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/05-key.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-7113\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/05-key.png\" alt=\"05-key\" width=\"650\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key.png 911w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-300x211.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-768x541.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-671x473.png 671w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-465x328.png 465w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-335x236.png 335w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-186x131.png 186w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-100x70.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/05-key-43x30.png 43w\" sizes=\"(max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2014\/06\/06-success.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-7114\" src=\"\/blog\/wp-content\/uploads\/2014\/06\/06-success.png\" alt=\"06-success\" width=\"650\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success.png 898w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-300x189.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-768x484.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-720x454.png 720w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-500x315.png 500w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-360x227.png 360w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-200x126.png 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-100x63.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/06\/06-success-48x30.png 48w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><\/p>\n<p>This results in a deployment called <span class=\"navCode\">platform.ear<\/span>.<\/p>\n<p>This needs to be associated with a server group:<\/p>\n<p><span class=\"navCode\">platform.ear<\/span> is now associated to the server group <span class=\"navCode\">eXo-cluster-group<\/span> (as a consequence it is associated to all its child servers).<\/p>\n<p>Because <span class=\"navCode\">auto-start=&#8221;true&#8221;<\/span> is enabled for the server <span class=\"navCode\">eXo-cluster-node1<\/span> (look in <span class=\"navCode\">eXo-host.xml<\/span>), the platform is automatically deployed.<\/p>\n<p>These are the last lines of <span class=\"navCode\">JBOSS_HOME\/eXo_domain\/log\/console-stdout.log<\/span>:<\/p>\n<pre class=\"lang:default decode:true \">[Server:autonomous-eXo-instance-1] 00:26:11,979 INFO  [exo.kernel.container.RootContainer] (ServerService Thread Pool -- 42) The portal container 'portal' has been created successfully\n[Server:autonomous-eXo-instance-1] 00:26:12,036 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS018559: D\u00e9ploiement de \"platform-4.0.6.ear\" (runtime-name: \"platform-4.0.6.ear\")\n[Server:autonomous-eXo-instance-1] 00:26:12,041 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.1.1.GA (AS 7.2.1.Final-redhat-10) booted in 101717ms \n<\/pre>\n<p>To access the platform: use port 8080<\/p>\n<p><b><i>method 2: Deploy platform.ear using the CLI<\/i><\/b><\/p>\n<p><span class=\"navCode\">Jboss-cli.sh<\/span> offers the same capabilities as the web console and is scriptable.<\/p>\n<p>To deploy <span class=\"navCode\">platform.ear<\/span> run the following command:<\/p>\n<pre class=\"lang:default decode:true \">JBOSS_HOME\/bin\/jboss-cli.sh --connect --command=\u201ddeploy $PATH_TO_EAR --name=$NEW_DEPL_NAME --server-groups=$SERVER_GROUP_NAME\u201d<\/pre>\n<p>where<\/p>\n<p><span class=\"navCode\">$PATH_TO_EAR<\/span>: Path to the ear.<br \/>\n<span class=\"navCode\">$NEW_DEPL_NAME<\/span>: Not mandatory; if not specified, the deployment name will match the ear filename.<br \/>\n<span class=\"navCode\">$SERVER_GROUP_NAME<\/span>: Target server group: eXo-cluster-Group in our example.<\/p>\n<p>Next you can <b>start<\/b> and <b>stop<\/b> a given server (<span class=\"navCode\">eXo-cluster-node1<\/span> and <span class=\"navCode\">eXo-cluster-node1<\/span>: Look in <span class=\"navCode\">eXo-host.xml<\/span>).<\/p>\n<pre class=\"lang:default decode:true \">BOSS_HOME\/bin\/jboss-cli.sh --connect --command=\u201d\/host=$JBOSS_HOSTNAME\/server-config=$SERVER_NAME:start(blocking=true)\u201d<\/pre>\n<p>where<\/p>\n<p><span class=\"navCode\">$JBOSS_HOSTNAME<\/span>: Defined in eXo-host.xml (&lt;host name=&#8221;NAME&#8221; xmlns=&#8221;urn:jboss:domain:1.4&#8243;&gt;) master in our example.<br \/>\n<span class=\"navCode\">$SERVER_NAME<\/span>: Defined in eXo-host.xml (&lt;server name=&#8221;NAME&#8221; \u2026&gt;)<\/p>\n<p><span class=\"navCode\">blocking=true<\/span>: Means that the command will not exit until full completion of the task.<\/p>\n<p>This procedure can be used to create the required instances by declaring and associating server groups with profiles, and hosts with servers.<\/p>\n<p>Some modifications are required to run an eXo cluster in domain mode. These are mainly related to system properties.<\/p>\n<p>A future post will describe how to perform a two nodes cluster installation in Jboss domain mode, and how to integrate modcluster for loadblancing.<\/p>\n<p>&nbsp;<\/p>\n<p><b><a href=\"https:\/\/community.exoplatform.com\/portal\/dw\/\" target=\"_blank\" rel=\"noopener\">Join the eXo tribe<\/a> by registering for the community and get updates, tutorials, support, and access to the Platform and add-on downloads!<\/b><\/p>\n<p><!--begin adv-events--><\/p>\n<div class=\"adv-events\" style=\"background: #476fad; padding: 30px 20px; color: white; border-radius: 3px;\">\n<div class=\"media\">\n<div class=\"pull-right\"><a href=\"#\"><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-6587 alignright\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/02\/how-to-make-the-most-of-eXo-platform41.png\" alt=\"make-the-most-out-of-eXo-platform4\" width=\"161\" height=\"85\"><br \/>\n<\/a><\/div>\n<div class=\"media-body\">\n<h4 class=\"media-heading\">Make the most out of eXo Platform 4<\/h4>\n<p>Register to the next webinar and get a complete overview of what you can do with eXo Platform 4. <strong><a href=\"https:\/\/www.exoplatform.com\/contact-us\/?utm_source=BlogEn&amp;utm_medium=Blog&amp;utm_campaign=Content&amp;utm_content=link\">Reserve your seat now!<\/a><\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!--end adv-events--><\/p>\n","protected":false},"excerpt":{"rendered":"The JBoss AS 7 \/ EAP 6, has introduced a new deployment mode named domain. This mode aims to ease the configuration and management of several JBoss instances. The difference between the classic standalone mode and domain mode is that the latter allows centralization of the configuration and deployment in one unique point.","protected":false},"author":98,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[699],"tags":[],"lang":"en","translations":{"en":7107},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/7107"}],"collection":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/comments?post=7107"}],"version-history":[{"count":0,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/7107\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/media?parent=7107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/categories?post=7107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/tags?post=7107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}