{"id":1741,"date":"2017-05-08T14:15:25","date_gmt":"2017-05-08T14:15:25","guid":{"rendered":"https:\/\/www.enprowess.com\/blogs\/?p=1741"},"modified":"2022-04-27T16:08:20","modified_gmt":"2022-04-27T10:38:20","slug":"service-builder-liferay-dxp","status":"publish","type":"post","link":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/","title":{"rendered":"Learn Liferay 7\/DXP service builder &#8211; The right way!"},"content":{"rendered":"<p>Service builder is most important part in Liferay development. In this post, I am going to talk about Service builder in Liferay 7\/DXP. To explain it more effectively, I have taken example of Employee registration. Before we discuss about how use service builder in Liferay 7\/DXP, let\u2019s talk about some fact about it.<\/p>\n<h4><strong>Liferay 7\/DXP Service Builder at glance,<\/strong><\/h4>\n<ul>\n<li>Liferay provides Service Builder tool for generating model objects, Service layer and DAO\u00a0layer.<\/li>\n<li>In Liferay 7, service builder generates two OSGI modules as follow,<\/li>\n<li>Service API (in this example employee-api) module\u00a0which contains service interfaces and wrapper services<\/li>\n<li>Service module (in this example employee-service) contains service implementation layers<\/li>\n<p> \tFor more information on service builder, refer following link,\n<\/ul>\n<p><a href=\"https:\/\/dev.liferay.com\/develop\/tutorials\/-\/knowledge_base\/7-0\/what-is-service-builder\">https:\/\/dev.liferay.com\/develop\/tutorials\/-\/knowledge_base\/7-0\/what-is-service-builder<\/a><\/p>\n<p>Following are some prerequisite to start implementing service builder example,<\/p>\n<h4><strong>Prerequisite:<\/strong><\/h4>\n<ul>\n<li><a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/jdk8-downloads-2133151.html\">Java 1.8<\/a><\/li>\n<li><a href=\"https:\/\/www.liferay.com\/downloads\">Liferay 7 must be installed.<\/a><\/li>\n<li><a href=\"https:\/\/web.liferay.com\/downloads\/liferay-projects\/liferay-ide\">Liferay Developer studio<\/a><\/li>\n<\/ul>\n<p>\nBefore we discuss steps to implement service builder, it is important for you to understand that Liferay 7\/DXP uses OSGI. It makes Liferay 7\/DXP modular application. Your service layer and portlets are different OSGI module and both are loosely coupled. You can learn more about OSGI in Liferay from following link,<br \/>\n<br \/>\n<a href=\"https:\/\/dev.liferay.com\/develop\/tutorials\/-\/knowledge_base\/7-0\/osgi-and-modularity-for-liferay-6-developers\">https:\/\/dev.liferay.com\/develop\/tutorials\/-\/knowledge_base\/7-0\/osgi-and-modularity-for-liferay-6-developers<\/a><\/p>\n<p>Following are the steps to generate service\/API module using service builder. In next, we will understand how to use service layer module in portlet.<\/p>\n<ol>\n<li>\n<h4><strong>Create Liferay workspace project: <\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>To create a Liferay Workspace in IDE follow the following steps,<\/p>\n<p>Open File Menu \u2192 Click on New \u2192 Select Liferay Workspace Project. Upon creation of the workspace, the structure should look like below:<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1742 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder1.png\" alt=\"Create Liferay workspace project\" width=\"277\" height=\"193\" \/><\/p>\n<ol start=\"2\">\n<li>\n<h4><strong>Create a Liferay Services Builder<\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>\n \ta. Right click on Liferay Workspace project in project explorer \u2192 Select New \u2192 Click on Liferay Module Project. Fill up the detail as follow,<br \/>\n<\/p>\n<ul>\n<li><strong>Project Name: enter appropriate name e.g.&#8221; Employee&#8221; <\/strong><\/li>\n<li><strong>Project Template Name: Select &#8220;servicebuilder&#8221;<\/strong><\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1743 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder2.png\" alt=\"Create a Liferay Services Builder\" width=\"537\" height=\"509\" \/><\/p>\n<p> \tb. Now in Package Name enter appropriate name e.g. \u201ccom.enprowess.osgi.example\u201d then click finish.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1744 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder3.png\" alt=\"package Name enter\" width=\"535\" height=\"508\" \/><\/p>\n<p> \tc. On click of \u2018finish\u2019, you will see following folder structure,<\/p>\n<p style=\"padding-left: 60px;\"><img loading=\"lazy\" class=\"size-full wp-image-1745 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder3.1.png\" alt=\"finish\" width=\"345\" height=\"300\" \/><\/p>\n<ol start=\"3\">\n<li>\n<h4><strong>Modify \u201cService.xml\u201d<\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>Now that you have created skeleton for project. It is time to create service.xml. This is the file where you need to define entity details of your DB table. Following is the default service.xml.<\/p>\n<p><img class=\"size-full wp-image-1746 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder4.png\" alt=\"created skeleton for project\"  \/><br \/>\n<br \/>\nTo know more about service builder XML, please refer following link,<br \/>\n<br \/>\n<a href=\"https:\/\/docs.liferay.com\/portal\/7.0\/definitions\/liferay-service-builder_7_0_0.dtd.html\">https:\/\/docs.liferay.com\/portal\/7.0\/definitions\/liferay-service-builder_7_0_0.dtd.html<\/a><br \/>\n<\/p>\n<ol start=\"4\">\n<li>\n<h4><strong>Build services:<\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>You successfully created service.xml. When you build a service builder it generates classes for service layer. Now it\u2019s time to build service, to run service builder, right click on employee-service folder from project explorer \u2192 Select Liferay \u2192 Click on build-service.<\/p>\n<p><strong>Congratulation!<\/strong> now you know how to generate service\/API module in Liferay 7\/DXP. Now let\u2019s understand how you can use service module in portlet module. Here I assume that you already have create portlet module under Employee module.<br \/>\n<\/p>\n<ol>\n<li>\n<h4><strong>Update build.gradle:<\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>Update build.gradle file to add service module in dependency. Now gradle will ensure that when you build your portlet module, it will add dependencies mentioned in build file. Following is the snapshot for your reference,<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1747 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder4.1.png\" alt=\"Update build.gradle\" width=\"601\" height=\"151\" \/><\/p>\n<ol start=\"2\">\n<li>\n<h4><strong>Build portlet module:<\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>Building portlet module is strait forward and simple if you are using gradle task view. To add gradle task view in your eclipse, Click Window menu \u2192 Click on show view option \u2192 select gradle task. Following are the steps to build and deploy portlet module.<\/p>\n<ul>\n<li>Expand employee module \u2192 Click build target. It will build your portlet and add service jars in dependencies.<\/li>\n<li>Similarly, once build is over, click on deploy target to deploy portlet with service layer on server.<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"wp-image-1748 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/servicebuilder5.png\" alt=\"Build portlet module\" width=\"309\" height=\"376\" \/><\/p>\n<p>Congratulation! Now you know steps to implement service builder and use it in portlet.<\/p>\n<p>Blog By,<\/p>\n<p>Zeenesh Patel<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Service builder is most important part in Liferay development. In this post, I am going to talk about Service builder in Liferay 7\/DXP. To explain it more effectively, I have taken example of Employee registration. Before we discuss about how use service builder in Liferay 7\/DXP, let\u2019s talk about some fact about it. Liferay 7\/DXP&hellip; <a class=\"more-link\" href=\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/\">Continue reading <span class=\"screen-reader-text\">Learn Liferay 7\/DXP service builder &#8211; The right way!<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1753,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,46],"tags":[41,9,19,10,16,48,47],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Learn Liferay 7\/DXP service builder - The right way! - EnProwess Blog<\/title>\n<meta name=\"description\" content=\"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Learn Liferay 7\/DXP service builder - The right way!\" \/>\n<meta property=\"og:description\" content=\"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/\" \/>\n<meta property=\"og:site_name\" content=\"EnProwess Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-08T14:15:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-27T10:38:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:title\" content=\"Learn Liferay 7\/DXP service builder - The right way!\" \/>\n<meta name=\"twitter:description\" content=\"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\",\"name\":\"EnProwess\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg\",\"contentUrl\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg\",\"width\":1057,\"height\":697,\"caption\":\"EnProwess\"},\"image\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#website\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/\",\"name\":\"EnProwess Blog\",\"description\":\"Your Enterprise solution partner\",\"publisher\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.enprowess.com\/blogs\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/\",\"name\":\"Learn Liferay 7\/DXP service builder - The right way! - EnProwess Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage\"},\"datePublished\":\"2017-05-08T14:15:25+00:00\",\"dateModified\":\"2022-04-27T10:38:20+00:00\",\"description\":\"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.enprowess.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Liferay\",\"item\":\"https:\/\/www.enprowess.com\/blogs\/category\/liferay\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Learn Liferay 7\/DXP service builder &#8211; The right way!\"}]},{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11\"},\"headline\":\"Learn Liferay 7\/DXP service builder &#8211; The right way!\",\"datePublished\":\"2017-05-08T14:15:25+00:00\",\"dateModified\":\"2022-04-27T10:38:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage\"},\"wordCount\":628,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg\",\"keywords\":[\"DXP\",\"liferay\",\"Liferay DXP\",\"liferay7\",\"OSGI\",\"Service Builder\",\"ServiceBuilder\"],\"articleSection\":[\"Liferay\",\"Liferay DXP\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/www.enprowess.com\/blogs\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Learn Liferay 7\/DXP service builder - The right way! - EnProwess Blog","description":"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/","og_locale":"en_US","og_type":"article","og_title":"Learn Liferay 7\/DXP service builder - The right way!","og_description":"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.","og_url":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/","og_site_name":"EnProwess Blog","article_published_time":"2017-05-08T14:15:25+00:00","article_modified_time":"2022-04-27T10:38:20+00:00","og_image":[{"url":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg"}],"twitter_card":"summary","twitter_title":"Learn Liferay 7\/DXP service builder - The right way!","twitter_description":"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.","twitter_image":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.enprowess.com\/blogs\/#organization","name":"EnProwess","url":"https:\/\/www.enprowess.com\/blogs\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/#logo","inLanguage":"en-US","url":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg","contentUrl":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg","width":1057,"height":697,"caption":"EnProwess"},"image":{"@id":"https:\/\/www.enprowess.com\/blogs\/#logo"}},{"@type":"WebSite","@id":"https:\/\/www.enprowess.com\/blogs\/#website","url":"https:\/\/www.enprowess.com\/blogs\/","name":"EnProwess Blog","description":"Your Enterprise solution partner","publisher":{"@id":"https:\/\/www.enprowess.com\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enprowess.com\/blogs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage","inLanguage":"en-US","url":"","contentUrl":""},{"@type":"WebPage","@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage","url":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/","name":"Learn Liferay 7\/DXP service builder - The right way! - EnProwess Blog","isPartOf":{"@id":"https:\/\/www.enprowess.com\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage"},"datePublished":"2017-05-08T14:15:25+00:00","dateModified":"2022-04-27T10:38:20+00:00","description":"Struggling to implement service builder in DXP? Here is step by step guide to implement Service builder.","breadcrumb":{"@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.enprowess.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Liferay","item":"https:\/\/www.enprowess.com\/blogs\/category\/liferay\/"},{"@type":"ListItem","position":3,"name":"Learn Liferay 7\/DXP service builder &#8211; The right way!"}]},{"@type":"TechArticle","@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#article","isPartOf":{"@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage"},"author":{"@id":"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11"},"headline":"Learn Liferay 7\/DXP service builder &#8211; The right way!","datePublished":"2017-05-08T14:15:25+00:00","dateModified":"2022-04-27T10:38:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#webpage"},"wordCount":628,"commentCount":0,"publisher":{"@id":"https:\/\/www.enprowess.com\/blogs\/#organization"},"image":{"@id":"https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-servicebuilder.jpg","keywords":["DXP","liferay","Liferay DXP","liferay7","OSGI","Service Builder","ServiceBuilder"],"articleSection":["Liferay","Liferay DXP"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.enprowess.com\/blogs\/service-builder-liferay-dxp\/#respond"]}]},{"@type":"Person","@id":"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11","name":"admin","image":{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/www.enprowess.com\/blogs\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1741"}],"collection":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/comments?post=1741"}],"version-history":[{"count":10,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1741\/revisions"}],"predecessor-version":[{"id":3217,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1741\/revisions\/3217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/media\/1753"}],"wp:attachment":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/media?parent=1741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/categories?post=1741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/tags?post=1741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}