{"id":718,"date":"2011-12-30T20:19:00","date_gmt":"2011-12-30T20:19:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/configure-java-ee-applications-or-putting-bien-into-practice.html"},"modified":"2012-10-21T20:45:02","modified_gmt":"2012-10-21T20:45:02","slug":"configure-java-ee-applications-or","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html","title":{"rendered":"Configure Java EE applications or &#8220;Putting Bien into practice&#8221;"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">A lot has been talked about application configuration in the past. I don&#8217;t know who kicked off the debate but the most fundamental reading (with a look at future Java EE 7 and beyond) is Antonio Goncalves&#8217; posting <a href=\"http:\/\/agoncal.wordpress.com\/2011\/06\/10\/debate-and-what-about-configuration-in-java-ee-7\/\" target=\"_blank\">[Debate] \u2013 And what about configuration in Java EE 7<\/a>. Fact is, with vanilla Java EE we all do application configuration day by day. Without having any special mechanism in place. Having seen <a href=\"http:\/\/www.adam-bien.com\/roller\/abien\/entry\/how_to_configure_java_ee\" target=\"_blank\">Adam&#8217;s latest post from yesterday<\/a> I would like to share a slight add-on to it, which I feel could fit to most of the projects out there.<\/p>\n<p><strong>Why this post?<\/strong><\/p>\n<p>The basics shown by Adam are really smart. You simply<\/p>\n<pre class=\"brush: java\">@Inject\r\nint yourConfigVariable;\r\n<\/pre>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"http:\/\/3.bp.blogspot.com\/-goGUtKRnS04\/Tmhs2TCA2UI\/AAAAAAAAAZ8\/vgHvjNUdiPo\/s1600\/IMG-20110908-00024.jpg\"><img decoding=\"async\" border=\"0\" height=\"320\" src=\"http:\/\/3.bp.blogspot.com\/-goGUtKRnS04\/Tmhs2TCA2UI\/AAAAAAAAAZ8\/vgHvjNUdiPo\/s320\/IMG-20110908-00024.jpg\" width=\"240\" \/><\/a><\/div>\n<p>and you are done. You don&#8217;t have to care about properties or other configuration classes. But looking into it, you see, that you somehow need to fill your configuration from somewhere. And looking back at Antonio&#8217;s post, you see that you have a lot of options doing this. The one we are most comfortable with is probably Java&#8217;s <a href=\"http:\/\/download.oracle.com\/javase\/7\/docs\/api\/java\/util\/Properties.html\" target=\"_blank\">Properties<\/a> mechanism. Using this in combination with the code presented by Adam you end up having a Configuration.properties with an endless list of single word keys. That&#8217;s not what I would call maintainable. So basically this is why the post has the title: &#8220;Putting Bien into&nbsp;practice&#8221; ..oO(sorry for that, Adam!) :-) Here are my approaches to the problem.<\/p>\n<p><strong>Fill your configuration from a properties file<\/strong><\/p>\n<p>The most basic part is to add a Configuration.properties file to your application (default package). Now we are going to modify the configuration holder a bit to make it a Properties type. Now modify Adam&#8217;s fetchConfiguration() method to load it. <div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<pre class=\"brush: java\">private Properties configData;\r\n\r\n@PostConstruct\r\n    public void fetchConfiguration() {\r\n    String fileName = \"Configuration.properties\";\r\n            configData =\r\n                    loadPropertiesFromClasspath(fileName);\r\n}\r\n\r\n     \/**\r\n     * Load properties file from classpath with Java 7 :-)\r\n     * @param fileName\r\n     * @return properties\r\n     *\/\r\n  public static Properties loadPropertiesFromClasspath(String fileName) {\r\n  try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(\r\n                        fileName)) {\r\n            if (in != null) {\r\n                props = new Properties();\r\n                props.load(in);\r\n            }\r\n        } catch (IOException ioe) {\r\n            log.debug(\"Can't load properties.\", ioe);\r\n        }\r\n<\/pre>\n<p>Now you have to modify the @Producer methods accordingly. I&#8217;m only showing the getString() method here to show you the concept:<\/p>\n<pre class=\"brush: java\">\/**\r\n     * Get a String property\r\n     * @param point\r\n     * @return String\r\n     *\/\r\n@Produces\r\npublic String getString(InjectionPoint point) {\r\n        String propertyPath = point.getMember().getDeclaringClass().getName()+ \".\";\r\n        String propertyName = point.getMember().getName();\r\n        String propertyValue = configData.getProperty(propertyPath+propertyName);\r\n        return (propertyValue == null) ? \"\" : propertyValue;\r\n    }\r\n<\/pre>\n<p>For convenience reasons I added the name of the declaring class as propertyPath in order to have a bit more order within your property file. You use the producer methods as Adam has shown:<\/p>\n<pre class=\"brush: java\">package net.eisele.configuration;\r\npublic class HitsFlushTimer {\r\n    @Inject\r\n    private String hitsFlushRate;\r\n }\r\n<\/pre>\n<p>In this case you end up accessing a property with the key net.eisele.configuration.HitsFlushTimer.hitsFlushRate in your Configuration.properties file. One quick warning. If it happens to you, that you have to package separate ejb and war modules within an ear you probably need the javax.annotation.security.PermitAll annotation at your Configuration singleton.<\/p>\n<p><strong>Then you end up with lots of duplicates <\/strong><\/p>\n<p>That&#8217;s probably true. If you have the same configuration over an over again (e.g. httpProxy) this would force you to have the same value for different keys in your property file. The solution seems straight forward. We need our own&nbsp;Qualifier&nbsp;for that. Let&#8217;s go:<\/p>\n<pre class=\"brush: java\">@Retention(RUNTIME)\r\n@Target({FIELD, METHOD})\r\n@Qualifier\r\npublic @interface AppProperty {\r\n    @Nonbinding\r\n    public String value();\r\n}\r\n<\/pre>\n<p>Now we have our own Qualifier for that. Next is to change the @Producer accordingly:<\/p>\n<pre class=\"brush: java\">@Produces @AppProperty(\"\")\r\n    public String getString(InjectionPoint point) {\r\n    String property = point.getAnnotated().getAnnotation(AppProperty.class).value();\r\n    String valueForFieldName = configData.getProperty(property);\r\n    return (valueForFieldName == null) ? \"\" : valueForFieldName;\r\n}\r\n<\/pre>\n<p>That&#8217;s it. Now you can use something like this wherever you like:<\/p>\n<pre class=\"brush: java\">@Inject\r\n    @AppProperty(\"net.eisele.configuration.test2\")\r\n    String test2;\r\n<\/pre>\n<p>I know, this isn&#8217;t half that elegant like Adam&#8217;s one @Inject annotation. But:You don&#8217;t have to guess a lot to see what&#8217;s happening and where your value is coming from. I consider this a big pro in projects with more than one developer.<\/p>\n<p><strong>Yeah. Still not very maintainable.<\/strong><\/p>\n<p>Ok. I know. You are still talking about refactoring property names. Right? What is left to do? You could think about using a CKey Enum which encapsulates all your property keys and use this instead of simply using the keys itself. But, I would prefer to simply use the plain String keys within my code. Happy configuring now. How are you configuring your applications? Let me know! Happy to receive comments :)<\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/blog.eisele.net\/2011\/09\/configure-java-ee-applications-or.html\">Configure Java EE applications or &#8220;Putting Bien into practice&#8221;<\/a>&nbsp; from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a>&nbsp;Markus Eisele&nbsp; at the&nbsp;<a href=\"http:\/\/blog.eisele.net\/\">Enterprise Software Development with Java<\/a>&nbsp;blog.<\/p>\n<p><strong><i>Related Articles :<\/i><\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/11\/from-spring-to-java-ee-6.html\">From Spring to Java EE 6<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/09\/configuration-management-in-java-ee.html\">Configuration Management in Java EE<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/10\/java-ee-past-present-cloud-7.html\">Java EE Past, Present, &amp; Cloud 7<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/10\/java-ee6-events-lightweight-alternative.html\">Java EE6 Events: A lightweight alternative to JMS<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/10\/java-ee6-decorators-decorating-classes.html\">Java EE6 Decorators: Decorating classes at injection time<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A lot has been talked about application configuration in the past. I don&#8217;t know who kicked off the debate but the most fundamental reading (with a look at future Java EE 7 and beyond) is Antonio Goncalves&#8217; posting [Debate] \u2013 And what about configuration in Java EE 7. Fact is, with vanilla Java EE we &hellip;<\/p>\n","protected":false},"author":92,"featured_media":148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[289],"class_list":["post-718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-java-ee6"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configure Java EE applications or &quot;Putting Bien into practice&quot; - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"A lot has been talked about application configuration in the past. I don&#039;t know who kicked off the debate but the most fundamental reading (with a look at\" \/>\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\/12\/configure-java-ee-applications-or.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configure Java EE applications or &quot;Putting Bien into practice&quot; - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"A lot has been talked about application configuration in the past. I don&#039;t know who kicked off the debate but the most fundamental reading (with a look at\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.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\/eisele.markus\" \/>\n<meta property=\"article:published_time\" content=\"2011-12-30T20:19:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T20:45:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-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=\"Markus Eisele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/myfear\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Markus Eisele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html\"},\"author\":{\"name\":\"Markus Eisele\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/83c0139425aee143ae0d269868475066\"},\"headline\":\"Configure Java EE applications or &#8220;Putting Bien into practice&#8221;\",\"datePublished\":\"2011-12-30T20:19:00+00:00\",\"dateModified\":\"2012-10-21T20:45:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html\"},\"wordCount\":677,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"keywords\":[\"Java EE6\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html\",\"name\":\"Configure Java EE applications or \\\"Putting Bien into practice\\\" - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"datePublished\":\"2011-12-30T20:19:00+00:00\",\"dateModified\":\"2012-10-21T20:45:02+00:00\",\"description\":\"A lot has been talked about application configuration in the past. I don't know who kicked off the debate but the most fundamental reading (with a look at\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/configure-java-ee-applications-or.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\":\"Configure Java EE applications or &#8220;Putting Bien into practice&#8221;\"}]},{\"@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\\\/83c0139425aee143ae0d269868475066\",\"name\":\"Markus Eisele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g\",\"caption\":\"Markus Eisele\"},\"description\":\"Markus is a Developer Advocate at Red Hat and focuses on JBoss Middleware. He is working with Java EE servers from different vendors since more than 14 years and talks about his favorite topics around Java EE on conferences all over the world. He has been a principle consultant and worked with different customers on all kinds of Java EE related applications and solutions. Beside that he has always been a prolific blogger, writer and tech editor for different Java EE related books. He is an active member of the German DOAG e.V. and it's representative on the iJUG e.V. As a Java Champion and former ACE Director he is well known in the community. Follow him on Twitter @myfear.\",\"sameAs\":[\"http:\\\/\\\/blog.eisele.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/eisele.markus\",\"http:\\\/\\\/de.linkedin.com\\\/in\\\/markuseisele\\\/en\",\"https:\\\/\\\/x.com\\\/http:\\\/\\\/twitter.com\\\/myfear\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/markus-eisele\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configure Java EE applications or \"Putting Bien into practice\" - Java Code Geeks","description":"A lot has been talked about application configuration in the past. I don't know who kicked off the debate but the most fundamental reading (with a look at","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\/12\/configure-java-ee-applications-or.html","og_locale":"en_US","og_type":"article","og_title":"Configure Java EE applications or \"Putting Bien into practice\" - Java Code Geeks","og_description":"A lot has been talked about application configuration in the past. I don't know who kicked off the debate but the most fundamental reading (with a look at","og_url":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/eisele.markus","article_published_time":"2011-12-30T20:19:00+00:00","article_modified_time":"2012-10-21T20:45:02+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","type":"image\/jpeg"}],"author":"Markus Eisele","twitter_card":"summary_large_image","twitter_creator":"@http:\/\/twitter.com\/myfear","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Markus Eisele","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html"},"author":{"name":"Markus Eisele","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/83c0139425aee143ae0d269868475066"},"headline":"Configure Java EE applications or &#8220;Putting Bien into practice&#8221;","datePublished":"2011-12-30T20:19:00+00:00","dateModified":"2012-10-21T20:45:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html"},"wordCount":677,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","keywords":["Java EE6"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html","url":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html","name":"Configure Java EE applications or \"Putting Bien into practice\" - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","datePublished":"2011-12-30T20:19:00+00:00","dateModified":"2012-10-21T20:45:02+00:00","description":"A lot has been talked about application configuration in the past. I don't know who kicked off the debate but the most fundamental reading (with a look at","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/configure-java-ee-applications-or.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":"Configure Java EE applications or &#8220;Putting Bien into practice&#8221;"}]},{"@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\/83c0139425aee143ae0d269868475066","name":"Markus Eisele","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/231f7cefb75b74a4fb2ef22cd99fe55d2a9323ceca56e8bc9b19533bae3dac6a?s=96&d=mm&r=g","caption":"Markus Eisele"},"description":"Markus is a Developer Advocate at Red Hat and focuses on JBoss Middleware. He is working with Java EE servers from different vendors since more than 14 years and talks about his favorite topics around Java EE on conferences all over the world. He has been a principle consultant and worked with different customers on all kinds of Java EE related applications and solutions. Beside that he has always been a prolific blogger, writer and tech editor for different Java EE related books. He is an active member of the German DOAG e.V. and it's representative on the iJUG e.V. As a Java Champion and former ACE Director he is well known in the community. Follow him on Twitter @myfear.","sameAs":["http:\/\/blog.eisele.net\/","https:\/\/www.facebook.com\/eisele.markus","http:\/\/de.linkedin.com\/in\/markuseisele\/en","https:\/\/x.com\/http:\/\/twitter.com\/myfear"],"url":"https:\/\/www.javacodegeeks.com\/author\/markus-eisele"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/718","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\/92"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=718"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/718\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}