{"id":533,"date":"2011-09-26T15:26:00","date_gmt":"2011-09-26T15:26:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/jboss-modules-example-modular-web-application.html"},"modified":"2012-10-21T20:11:18","modified_gmt":"2012-10-21T20:11:18","slug":"jboss-modules-example-modular-web","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html","title":{"rendered":"JBoss Modules Example &#8211; Modular Web Application"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">Recently I read <a href=\"http:\/\/onlysoftware.wordpress.com\/2011\/07\/19\/why-there-is-no-standard-for-developing-real-modular-web-applications\/\">Why there is no standard for developing real modular web applications?<\/a> by Patroklos Papapetrou (<a href=\"http:\/\/www.javacodegeeks.com\/2011\/09\/real-modular-web-applications-why-there.html\">also featured in Java Code Geeks<\/a>). Inspired by this article I decided to check <a href=\"https:\/\/docs.jboss.org\/author\/display\/MODULES\/Home\">JBoss Modules<\/a> in action. This post describes my experiment step by step.<\/p>\n<p>I&#8217;ve started with the following goal in mind &#8211; to create a web application using some service defined by my own JBoss module. The service prepared by me was pretty simple.  I named it Echo Service:<\/p>\n<pre class=\"brush:java\">package warlock.echo;\r\n\r\npublic interface EchoService {\r\n\r\n    String echo(String param);\r\n    \r\n}\r\n<\/pre>\n<p>and placed into a separate jar file, named echo-api. Then I implemented this service:<\/p>\n<pre class=\"brush:java\">package warlock.echo.impl;\r\n\r\nimport warlock.echo.EchoService;\r\n\r\npublic class DefaultEchoService implements EchoService {\r\n    \r\n    public String echo(String param) {\r\n        return param;\r\n    }\r\n        \r\n}\r\n<\/pre>\n<p>and placed the implementation in a new jar file, named echo-module. Having in mind that my web application should have knowledge of the service API only, not the specific implementation, I decided to go with the way described in <a href=\"http:\/\/java.sun.com\/developer\/technicalArticles\/javase\/extensible\/\">Creating Extensible Applications With the Java Platform<\/a> &#8211; that choice required adding to echo-module jar special file under: META-INF\/services\/warlock.echo.EchoService, holding the &#8220;pointer&#8221; to the service implementation (fully qualified name of implementing class).<\/p>\n<p>At this point, I retrieved and unpacked <a href=\"http:\/\/www.jboss.org\/jbossas.html\">JBoss Application Server 7<\/a>, stepped into the unpacked JBoss, and then into the modules directory. In this directory I&#8217;ve added the following structure:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><a href=\"http:\/\/1.bp.blogspot.com\/-WIdI5Z71j_8\/Tn4Rx5VpZ5I\/AAAAAAAAAHc\/4CAyU0LtXsE\/s1600\/Echo%2BModule%2B-%2BDirectory%2BStructure.png\"><img decoding=\"async\" alt=\"\" border=\"0\" src=\"http:\/\/1.bp.blogspot.com\/-WIdI5Z71j_8\/Tn4Rx5VpZ5I\/AAAAAAAAAHc\/4CAyU0LtXsE\/s320\/Echo%2BModule%2B-%2BDirectory%2BStructure.png\" style=\"cursor: hand;cursor: pointer;height: 73px;margin: 0px auto 10px;text-align: center;width: 320px\" \/><\/a><\/p>\n<p>Two jar files visible here are mentioned above, module.xml file is the definition of my JBoss Module &#8211; named &#8216;warlock.echo&#8217;, and has the following content:<\/p>\n<pre class=\"brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;module xmlns=\"urn:jboss:module:1.0\" name=\"warlock.echo\"&gt;\r\n\r\n    &lt;resources&gt;\r\n        &lt;resource-root path=\"echo-module-1.0.0-SNAPSHOT.jar\" \/&gt;\r\n        &lt;resource-root path=\"echo-api-1.0.0-SNAPSHOT.jar\" \/&gt;\r\n    &lt;\/resources&gt;\r\n\r\n&lt;\/module&gt;\r\n<\/pre>\n<p>After the completion of the JBoss Module definition, I&#8217;ve prepared a simple Spring Framework based application (which uses echo-api jar only during the compilation of project and doesn&#8217;t use the echo-module jar at all) with only one Controller:<\/p>\n<pre class=\"brush:java\">package warlock;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.ResponseBody;\r\n\r\nimport warlock.echo.EchoService;\r\n\r\n@Controller\r\n@RequestMapping(\"\/echo.html\")\r\npublic class EchoController {\r\n\r\n    @Autowired\r\n    private EchoService service;\r\n    \r\n    @RequestMapping(method = RequestMethod.GET)\r\n    @ResponseBody\r\n    public String handleGet() {\r\n        return service.echo(\"It workzzzzz!\");\r\n    }\r\n}\r\n<\/pre>\n<p>As you can see, the Controller returns as response body the result of Echo Service call for some string. Now to the most important part &#8211; Echo Service definition in Web Application:<\/p>\n<pre class=\"brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;beans xmlns=\"http:\/\/www.springframework.org\/schema\/beans\"\r\nxmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\nxsi:schemaLocation=\"http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\"&gt;\r\n\r\n    ...\r\n\r\n    &lt;bean class=\"org.springframework.beans.factory.serviceloader.ServiceFactoryBean\"&gt;\r\n        &lt;property name=\"serviceType\" value=\"warlock.echo.EchoService\" \/&gt;\r\n    &lt;\/bean&gt;\r\n\r\n    ...\r\n    \r\n&lt;\/beans&gt;\r\n<\/pre>\n<p>I know, one thing is bothering you :) &#8211; how the hell will Echo Service implementation be found if we don&#8217;t add either echo-api and echo-module jars to the Web Application?!<\/p>\n<p>Well, this is the beauty itself ;) &#8211; We just need one more thing &#8211; WEB-INF\/jboss-deployment-structure.xml file:<\/p>\n<pre class=\"brush:xml\">&lt;jboss-deployment-structure&gt;\r\n    &lt;deployment&gt;\r\n        &lt;dependencies&gt;\r\n            &lt;module name=\"warlock.echo\" services=\"export\" \/&gt;\r\n        &lt;\/dependencies&gt;\r\n    &lt;\/deployment&gt;\r\n&lt;\/jboss-deployment-structure&gt;\r\n<\/pre>\n<p>This way we tell JBoss that this application depends on the &#8216;warlock.echo&#8217; module and the services defined in this module. The rest is pure JBoss Module magic ;)<\/p>\n<p>Lectures for the dessert:<\/p>\n<ul style=\"text-align: left\">\n<li><a href=\"http:\/\/planet.jboss.org\/view\/post.seam?post=modularized_java_with_jboss_modules\">Modularized Java with JBoss Modules<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vardlokkur\/jboss-modules-001\">JBoss Modules Example<\/a><\/li>\n<\/ul>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/vard-lokkur.blogspot.com\/2011\/09\/modular-web-application-based-on-jboss.html\">Modular Web Application based on JBoss Modules<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> Warlock at the <a href=\"http:\/\/vard-lokkur.blogspot.com\/\">&#8220;Warlock&#8217;s Thoughts&#8221; blog<\/a>. <\/p>\n<p><strong><i>Related Articles :<\/i><\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/06\/osgi-using-maven-equinox.html\">OSGi Using Maven with Equinox<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/09\/real-modular-web-applications-why-there.html\">Real modular web applications: Why there is no standard for developing them?<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/03\/java-code-geeks-andygene-web-archetype.html\">Java Code Geeks Andygene Web Archetype<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/?tag=java-best-practices\">Java Best Practices Series<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/p\/java-tutorials.html\">Java Tutorials and Android Tutorials list<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks). Inspired by this article I decided to check JBoss Modules in action. This post describes my experiment step by step. I&#8217;ve started with the following goal in mind &#8211; to create a &hellip;<\/p>\n","protected":false},"author":74,"featured_media":151,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[242,243],"class_list":["post-533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-jboss-modules","tag-modularity"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JBoss Modules Example - Modular Web Application - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).\" \/>\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.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JBoss Modules Example - Modular Web Application - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/vardlokkur\" \/>\n<meta property=\"article:published_time\" content=\"2011-09-26T15:26:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T20:11:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Michal Jastak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/vardlokkur\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michal Jastak\" \/>\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\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html\"},\"author\":{\"name\":\"Michal Jastak\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/ebff58fa7043aeea29a97cd558301947\"},\"headline\":\"JBoss Modules Example &#8211; Modular Web Application\",\"datePublished\":\"2011-09-26T15:26:00+00:00\",\"dateModified\":\"2012-10-21T20:11:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html\"},\"wordCount\":448,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-as7-logo.jpg\",\"keywords\":[\"JBoss Modules\",\"Modularity\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html\",\"name\":\"JBoss Modules Example - Modular Web Application - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-as7-logo.jpg\",\"datePublished\":\"2011-09-26T15:26:00+00:00\",\"dateModified\":\"2012-10-21T20:11:18+00:00\",\"description\":\"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-as7-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-as7-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/09\\\/jboss-modules-example-modular-web.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"JBoss Modules Example &#8211; Modular Web Application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/ebff58fa7043aeea29a97cd558301947\",\"name\":\"Michal Jastak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g\",\"caption\":\"Michal Jastak\"},\"description\":\"Micha\u0142 is a Chief Technology Officer in Java Division of AIS.PL, company developing mostly Web Applications of different kind, usually e-Government related.\",\"sameAs\":[\"http:\\\/\\\/vard-lokkur.blogspot.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/vardlokkur\",\"http:\\\/\\\/www.linkedin.com\\\/in\\\/vardlokkur\",\"https:\\\/\\\/x.com\\\/http:\\\/\\\/twitter.com\\\/vardlokkur\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Michal-Jastak\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JBoss Modules Example - Modular Web Application - Java Code Geeks","description":"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).","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.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html","og_locale":"en_US","og_type":"article","og_title":"JBoss Modules Example - Modular Web Application - Java Code Geeks","og_description":"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).","og_url":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/vardlokkur","article_published_time":"2011-09-26T15:26:00+00:00","article_modified_time":"2012-10-21T20:11:18+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg","type":"image\/jpeg"}],"author":"Michal Jastak","twitter_card":"summary_large_image","twitter_creator":"@http:\/\/twitter.com\/vardlokkur","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Michal Jastak","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html"},"author":{"name":"Michal Jastak","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/ebff58fa7043aeea29a97cd558301947"},"headline":"JBoss Modules Example &#8211; Modular Web Application","datePublished":"2011-09-26T15:26:00+00:00","dateModified":"2012-10-21T20:11:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html"},"wordCount":448,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg","keywords":["JBoss Modules","Modularity"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html","url":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html","name":"JBoss Modules Example - Modular Web Application - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg","datePublished":"2011-09-26T15:26:00+00:00","dateModified":"2012-10-21T20:11:18+00:00","description":"Recently I read Why there is no standard for developing real modular web applications? by Patroklos Papapetrou (also featured in Java Code Geeks).","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-as7-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/09\/jboss-modules-example-modular-web.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"JBoss Modules Example &#8211; Modular Web Application"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/ebff58fa7043aeea29a97cd558301947","name":"Michal Jastak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eee58bf22321be0a1710b2a755d8c3e10ee1e677c801e4e2e64bc9c790fb7add?s=96&d=mm&r=g","caption":"Michal Jastak"},"description":"Micha\u0142 is a Chief Technology Officer in Java Division of AIS.PL, company developing mostly Web Applications of different kind, usually e-Government related.","sameAs":["http:\/\/vard-lokkur.blogspot.com\/","https:\/\/www.facebook.com\/vardlokkur","http:\/\/www.linkedin.com\/in\/vardlokkur","https:\/\/x.com\/http:\/\/twitter.com\/vardlokkur"],"url":"https:\/\/www.javacodegeeks.com\/author\/Michal-Jastak"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=533"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/533\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/151"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}