{"id":87094,"date":"2019-01-25T07:00:15","date_gmt":"2019-01-25T05:00:15","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=87094"},"modified":"2019-01-24T10:44:44","modified_gmt":"2019-01-24T08:44:44","slug":"apache-payara-lets-encrypt","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html","title":{"rendered":"Apache Payara: Let&#8217;s Encrypt"},"content":{"rendered":"<p>Some time ago, I wrote a small <a href=\"https:\/\/www.amihaiemil.com\/2017\/10\/03\/letsencrypt-glassfish-ec2.html\">tutorial<\/a> on how you can generate Let\u2019s Encrypt SSL certificates and install them on your Glassfish Java EE Platform. That trick worked wonders for me but having to manually renew and reinstall the certificates every three months became quite annoying.<\/p>\n<p>I did a little research and, same as the first tutorial, this one is basically a summary of my findings. Before anything, I should mention <a href=\"https:\/\/twitter.com\/DaschnerS\">Mr. Daschner<\/a> who explained to me how HTTPS is usually handled in the Java EE world \u2013 many thanks!<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/push-button-kitty-1024x768.png\" alt=\"Apache Payara\" class=\"wp-image-87147\" width=\"820\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/push-button-kitty-1024x768.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/push-button-kitty-300x225.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/push-button-kitty-768x576.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/push-button-kitty.png 1336w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<p>Long story short: Payara, Glassfish, JBoss and others all have some differences in the way they handle HTTPS so, Mr. Dachner said, the sane way to do it is to let them work via HTTP behind the scenes and let an Apache HTTP Server actually communicate with the users, acting as a Reverse Proxy, forwarding all requests to\/from the hidden Java EE Platform.<\/p>\n<p>First things first, download Payara or other server of your choice, install and run it with the default configuration. By default, it should listen on port <code>8080<\/code>. No need to do anything further.<\/p>\n<p>Then, install Apache as explained <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-the-apache-web-server-on-ubuntu-18-04-quickstart\">here<\/a> and in the file <code>\/etc\/apache2\/sites-available\/example.com.conf<\/code>, specify the following (the file is <code>example.com.conf<\/code> as in the linked article):<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<figure>\n<pre class=\" brush:java\">&lt;VirtualHost *:80&gt;\n    ...\n    ProxyPass \/ https:\/\/0.0.0.0:8080\/\n    ProxyPassReverse \/ https:\/\/0.0.0.0:8080\/\n\n    ProxyPass \/myapp http:\/\/0.0.0.0:8080\/myapp\n    ProxyPassReverse \/myapp http:\/\/0.0.0.0:8080\/myapp\n&lt;\/VirtualHost&gt;<\/pre>\n<\/figure>\n<p>After saving the changes, don\u2019t forget to reload <code>Apache<\/code>, so it reads the new config:<\/p>\n<p><code>sudo systemctl reload apache2<\/code><\/p>\n<p>Now instruct your firewall to expose port <code>80<\/code> for incoming connections (this is probably already configured) and you have are half done. So far, you have a running Apache server which will forward all requests made to <code>www.example.com<\/code> and <code>www.example.com\/myapp<\/code> to the internal Payara.<\/p>\n<p>To enable SSL via Let\u2019s Encrypt, just follow the steps described <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\">here<\/a> and don\u2019t forget to press <code>2<\/code> when the following message appears from <code>certbot<\/code>:<\/p>\n<figure>\n<pre class=\" brush:java\">Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.\n-------------------------------------------------------------------------------\n1: No redirect - Make no further changes to the webserver configuration.\n2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for\nnew sites, or if you're confident your site works on HTTPS. You can undo this\nchange by editing your web server's configuration.\n-------------------------------------------------------------------------------\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel):<\/pre>\n<\/figure>\n<p>Pressing <code>2<\/code> will instruct certbot to automatically configure Apache so it redirects all HTTP traffic to HTTPS. This is very convenient since <code>http:\/\/<\/code> links are still widely spread so it only makes sense to redirect the user to the secure alternative.<\/p>\n<p>This is it, now everything should work via HTTPS and you should always see the green lock in your browser when accessing your Java EE apps via <code>www.example.com<\/code>. The only thing that I do not like is the fact that, apparently, we have to specify each context root (i.e. <code>\/myapp<\/code>) in Apache\u2019s config file. This seems very inconvenient, so I <a href=\"https:\/\/stackoverflow.com\/questions\/54315377\/apache-payara-reverse-proxy\">asked<\/a> StackOverflow how we can avoid having to do this \u2013 if you happen to know please, go ahead and post an answer!<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by MIhai Andronache, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"https:\/\/www.amihaiemil.com\/2019\/01\/23\/apache-payara-lets-encrypt.html\" target=\"_blank\" rel=\"noopener\">Apache. Payara. Let&#8217;s Encrypt.<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Some time ago, I wrote a small tutorial on how you can generate Let\u2019s Encrypt SSL certificates and install them on your Glassfish Java EE Platform. That trick worked wonders for me but having to manually renew and reinstall the certificates every three months became quite annoying. I did a little research and, same as &hellip;<\/p>\n","protected":false},"author":9580,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1849,418],"class_list":["post-87094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-payara","tag-encryption"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Payara: Let&#039;s Encrypt - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara\" \/>\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\/2019\/01\/apache-payara-lets-encrypt.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Payara: Let&#039;s Encrypt - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.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:published_time\" content=\"2019-01-25T05:00:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-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=\"Mihai Andronache\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@amihaiemil\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mihai Andronache\" \/>\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\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html\"},\"author\":{\"name\":\"Mihai Andronache\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c6e3966a14db90d8d29c77477e072d0b\"},\"headline\":\"Apache Payara: Let&#8217;s Encrypt\",\"datePublished\":\"2019-01-25T05:00:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html\"},\"wordCount\":450,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"Apache Payara\",\"Encryption\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html\",\"name\":\"Apache Payara: Let's Encrypt - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2019-01-25T05:00:15+00:00\",\"description\":\"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/apache-payara-lets-encrypt.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\":\"Apache Payara: Let&#8217;s Encrypt\"}]},{\"@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\\\/c6e3966a14db90d8d29c77477e072d0b\",\"name\":\"Mihai Andronache\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g\",\"caption\":\"Mihai Andronache\"},\"description\":\"Mihai is an experienced Java and JavaEE developer. His main interests are: clean OOP, code maintainability and testing. He is the creator of http:\\\/\\\/comdor.co and http:\\\/\\\/charles.amihaiemil.com\\\"\",\"sameAs\":[\"http:\\\/\\\/www.amihaiemil.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/mihai-andronache-2378767b\\\/\",\"https:\\\/\\\/x.com\\\/amihaiemil\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/mihai-andronache\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Payara: Let's Encrypt - Java Code Geeks","description":"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara","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\/2019\/01\/apache-payara-lets-encrypt.html","og_locale":"en_US","og_type":"article","og_title":"Apache Payara: Let's Encrypt - Java Code Geeks","og_description":"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara","og_url":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2019-01-25T05:00:15+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Mihai Andronache","twitter_card":"summary_large_image","twitter_creator":"@amihaiemil","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Mihai Andronache","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html"},"author":{"name":"Mihai Andronache","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c6e3966a14db90d8d29c77477e072d0b"},"headline":"Apache Payara: Let&#8217;s Encrypt","datePublished":"2019-01-25T05:00:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html"},"wordCount":450,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["Apache Payara","Encryption"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html","url":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html","name":"Apache Payara: Let's Encrypt - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2019-01-25T05:00:15+00:00","description":"Interested to learn about Apache Payara? Check our article explaining how how you can generate Let\u2019s Encrypt SSL certificates on Apache Payara","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/apache-payara-lets-encrypt.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":"Apache Payara: Let&#8217;s Encrypt"}]},{"@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\/c6e3966a14db90d8d29c77477e072d0b","name":"Mihai Andronache","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d342e768621537390b91b68e583aa67a96afe3b80d46fd86997287dd64afcbb0?s=96&d=mm&r=g","caption":"Mihai Andronache"},"description":"Mihai is an experienced Java and JavaEE developer. His main interests are: clean OOP, code maintainability and testing. He is the creator of http:\/\/comdor.co and http:\/\/charles.amihaiemil.com\"","sameAs":["http:\/\/www.amihaiemil.com","https:\/\/www.linkedin.com\/in\/mihai-andronache-2378767b\/","https:\/\/x.com\/amihaiemil"],"url":"https:\/\/www.javacodegeeks.com\/author\/mihai-andronache"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/87094","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\/9580"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=87094"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/87094\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=87094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=87094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=87094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}