{"id":70977,"date":"2017-11-30T22:00:57","date_gmt":"2017-11-30T20:00:57","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=70977"},"modified":"2017-11-30T11:21:11","modified_gmt":"2017-11-30T09:21:11","slug":"easy-java-ee-microservices-payara-micro","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html","title":{"rendered":"Easy Java EE Microservices with Payara Micro"},"content":{"rendered":"<p>Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that Java EE is too heavyweight for use with Microservices, but that is simply not the case&#8230;especially if you only utilize the Java EE specifications that are required by your service.\u00a0 In this brief post, I&#8217;ll demonstrate how to quickly develop a Microservice with Java EE and then deploy to Payara Micro.<\/p>\n<p>To download the example project, please go to GitHub:\u00a0\u00a0<a href=\"https:\/\/github.com\/juneau001\/SimpleService\">https:\/\/github.com\/juneau001\/SimpleService<\/a><\/p>\n<p>For the purposes of this example, I will utilize NetBeans, but any Java IDE will suffice.\u00a0 To get started, create a Maven web application and name it SimpleService.\u00a0 Next, create two Java packages:\u00a0 org.simpleservice and org.simpleservice.entity.\u00a0 Once complete, the project should resemble the following figure:<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-70992\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-1.png\" alt=\"\" width=\"348\" height=\"240\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-1.png 348w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-1-300x207.png 300w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/a><\/p>\n<p>Now many believe that a Microservice should not connect to an enterprise database, but I will leave that for those who wish to debate.\u00a0 In this example, I will connect this service to a central Apache derby database to obtain data because I believe this to be a very likely scenario in many organizations.\u00a0 In this case, we&#8217;ll create a &#8220;Suggested Name&#8221; database web service, which will query a database table of suggested names for the upcoming EE4J platform.\u00a0 To create the infrastructure, connect to a local Apache Derby database and create it using the following SQL:<\/p>\n<pre class=\"brush:sql\">create table SUGGESTED_NAME (\r\nid numeric primary key,\r\nname varchar(150));\r\n\r\ninsert into suggested_name values(1, 'Open EE');\r\ninsert into suggested_name values(2, 'Open JOE');\r\ninsert into suggested_name values(3, 'Cappucino');<\/pre>\n<p>Next, open the Maven POM file for the SimpleService project and add the following dependencies:<\/p>\n<pre class=\"brush:xml\">&lt;dependencies&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;javax.ws.rs&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;javax.ws.rs-api&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;2.1&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;scope&gt;provided&lt;\/scope&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;javax.persistence&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;javax.persistence-api&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;2.2&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;scope&gt;provided&lt;\/scope&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;javax.validation&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;validation-api&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;2.0.0.Final&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;javax.ejb&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;javax.ejb-api&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;3.2&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;type&gt;jar&lt;\/type&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;org.eclipse.persistence&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;eclipselink&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;2.5.2&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;org.eclipse.persistence&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;org.eclipse.persistence.jpa.modelgen.processor&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;2.5.2&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;scope&gt;provided&lt;\/scope&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;dependency&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;groupId&gt;org.apache.derby&lt;\/groupId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;artifactId&gt;derbyclient&lt;\/artifactId&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;version&gt;10.14.1.0&lt;\/version&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/dependency&gt;\r\n\u00a0 \u00a0 &lt;\/dependencies&gt;<\/pre>\n<p>Note that there is no Java EE dependency.\u00a0 This is because I am utilizing only those dependencies that are required for the service.\u00a0 Each dependency is added separately.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>Next, create a package org.simpleservice.entity, and create an entity class named SuggestedName within it.\u00a0 For brevity, I&#8217;m not going into all of the sources here, but you can check the sources out on GitHub (<a href=\"https:\/\/github.com\/juneau001\/SimpleService\">https:\/\/github.com\/juneau001\/SimpleService<\/a>).<\/p>\n<p>We&#8217;ll need to implement our JAX-RS web service class next.\u00a0 To configure the Java EE application for JAX-RS, let&#8217;s create a class named ApplicationConfig and place it within the org.simpleservice package:<\/p>\n<pre class=\"brush:java\">import java.util.Set;\r\nimport javax.ws.rs.core.Application;\r\n\r\n\/**\r\n\u00a0*\r\n\u00a0* @author Juneau\r\n\u00a0*\/\r\n@javax.ws.rs.ApplicationPath(\"rest\")\r\npublic class ApplicationConfig extends Application {\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public Set&lt;Class&lt;?&gt;&gt; getClasses() {\r\n\u00a0 \u00a0 \u00a0 \u00a0 Set&lt;Class&lt;?&gt;&gt; resources = new java.util.HashSet&lt;&gt;();\r\n\u00a0 \u00a0 \u00a0 \u00a0 resources.add(org.simpleservice.SuggestedNameService.class);\r\n\u00a0 \u00a0 \u00a0 \u00a0 return resources;\r\n\u00a0 \u00a0 }\r\n}<\/pre>\n<p>Next, I&#8217;ll create the JAX-RS web service class itself, and I will name it SuggestedNameService.\u00a0 Here are the sources for the SuggestedNameService class.\u00a0 Note that I have injected a Persistence Unit.\u00a0 I will get to that next.<\/p>\n<pre class=\"brush:java\">@Stateless\r\n \r\n@Path(\"suggestedNameService\")\r\n \r\npublic class SuggestedNameService {\r\n \r\n\r\n \r\n\u00a0 \u00a0 @PersistenceContext(unitName = \"SimpleService_1.0PU\")\r\n \r\n\u00a0 \u00a0 private EntityManager em;\r\n \r\n\r\n \r\n\r\n \r\n\u00a0 \u00a0 @GET\r\n \r\n\u00a0 \u00a0 @Path(\"{id}\")\r\n \r\n\u00a0 \u00a0 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})\r\n \r\n\u00a0 \u00a0 public SuggestedName find(@PathParam(\"id\") BigDecimal id) {\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 SuggestedName suggestedName = null;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 try {\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 suggestedName = (SuggestedName)\u00a0\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 em.createQuery(\"select object(o) from\u00a0SuggesetedName o \" +\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"where o.id = :id\")\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .setParameter(\"id\", id)\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .getSingleResult();\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 } catch (NoResultException ex){\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(\"Error: \"\u00a0 + ex);\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 return suggestedName;\r\n \r\n\u00a0 \u00a0 }\r\n \r\n\u00a0 \u00a0\r\n \r\n\u00a0 \u00a0 @GET\r\n \r\n\u00a0 \u00a0 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})\r\n \r\n\u00a0 \u00a0 public List&lt;SuggestedName&gt; findAll() {\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 List&lt;SuggestedName&gt; suggestedNames = null;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 try {\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 suggestedNames = em.createQuery(\"select object(o) from SuggestedName o\")\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .getResultList();\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 } catch (NoResultException ex){\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(\"Error: \"\u00a0 + ex);\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 return suggestedNames;\r\n \r\n\u00a0 \u00a0 }\r\n \r\n\r\n \r\n\u00a0 \u00a0 protected EntityManager getEntityManager() {\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 return em;\r\n \r\n\u00a0 \u00a0 }\r\n \r\n\u00a0 \u00a0\u00a0\r\n \r\n}<\/pre>\n<p>Since this service will connect to a database, I will create a persistence unit for the project.\u00a0 This can be easily done in NetBeans by right-clicking the project and choosing New-&gt;Persistence-&gt;Persistence Unit.\u00a0 Name the persistence unit SimpleService_1.0PU and use EclipseLink as the provider.\u00a0 Do not add a data source at this point.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-2.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-70993\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-2.png\" alt=\"\" width=\"783\" height=\"503\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-2.png 783w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-2-300x193.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/microservice-2-768x493.png 768w\" sizes=\"(max-width: 783px) 100vw, 783px\" \/><\/a><\/p>\n<p>Once created, open the Persistence Unit and add the connection information.\u00a0 In this case, I will connect to a JTA data source that I&#8217;ll define next.\u00a0 The data source is named DerbyDataSource, so the content of the Persistence Unit (persistence.xml) should look as follows:<\/p>\n<pre class=\"brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n \r\n&lt;persistence version=\"2.1\" xmlns=\"http:\/\/xmlns.jcp.org\/xml\/ns\/persistence\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:schemaLocation=\"http:\/\/xmlns.jcp.org\/xml\/ns\/persistence http:\/\/xmlns.jcp.org\/xml\/ns\/persistence\/persistence_2_1.xsd\"&gt;\r\n \r\n\u00a0 &lt;persistence-unit name=\"AuthorService_1.0PU\" transaction-type=\"JTA\"&gt;\r\n \r\n\u00a0 \u00a0 &lt;jta-data-source&gt;java:global\/DerbyDataSource&lt;\/jta-data-source&gt;\r\n \r\n\u00a0 \u00a0 &lt;exclude-unlisted-classes&gt;false&lt;\/exclude-unlisted-classes&gt;\r\n \r\n\u00a0 \u00a0 &lt;properties\/&gt;\r\n \r\n\u00a0 &lt;\/persistence-unit&gt;\r\n \r\n&lt;\/persistence&gt;<\/pre>\n<p>Create a web.xml deployment descriptor for the project.\u00a0 If doing this within NetBeans, simply right-click the project and choose New-&gt;Web-&gt;&#8221;Standard Deployment Descriptor (web.xml) and click Finish.\u00a0 Once the web.xml deployment descriptor has been generated, add the data source to it.<\/p>\n<pre class=\"brush:xml\">&lt;web-app xmlns=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\"\r\n\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0xsi:schemaLocation=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\/web-app_3_1.xsd\"\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0version=\"3.1\"&gt;\r\n \r\n\u00a0 \u00a0 &lt;session-config&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;session-timeout&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 30\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/session-timeout&gt;\r\n \r\n\u00a0 \u00a0 &lt;\/session-config&gt;\r\n\r\n \r\n \r\n&lt;data-source&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;name&gt;java:global\/DerbyDataSource&lt;\/name&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;class-name&gt;org.apache.derby.jdbc.ClientDriver&lt;\/class-name&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;server-name&gt;localhost&lt;\/server-name&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;port-number&gt;1527&lt;\/port-number&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;url&gt;jdbc:derby:\/\/localhost:1527\/acme&lt;\/url&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;user&gt;acmeuser&lt;\/user&gt;\r\n \r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;password&gt;yourpassword&lt;\/password&gt;\u00a0\r\n \r\n\u00a0 \u00a0 &lt;\/data-source&gt;\r\n\r\n \r\n&lt;\/web-app&gt;<\/pre>\n<p>That&#8217;s it for the Java EE application.\u00a0 You should now be able to compile the project into a WAR file and deploy to GlassFish, Payara, or another Java EE application server of your choice.\u00a0 In this case, let&#8217;s deploy to Payara Micro.<\/p>\n<p>To begin, download the latest Payara Micro JAR file from the website:\u00a0https:\/\/www.payara.fish\/payara_micro<\/p>\n<p>Once downloaded, the server can be started up by opening a command prompt and executing the JAR with your local Java runtime by typing:<\/p>\n<pre class=\"brush:java\">java -jar payara-micro-4.1.2.174.jar<\/pre>\n<p>To deploy the application (microservice) that we&#8217;ve created, simply utilize the &#8211;deploy option when executing the Payara Micro JAR, and point it to the SimpleService WAR file:<\/p>\n<pre class=\"brush:java\">java -jar payara-micro-4.1.2.174.jar --deploy SimpleService-1.0.war<\/pre>\n<p>The SimpleService microservice can now be accessed via the following URL:\u00a0\u00a0http:\/\/localhost:8080\/SimpleService-1.0\/rest\/suggestedNameService<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Josh Juneau, partner at our <a href=\"http:\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/jj-blogger.blogspot.com\/2017\/11\/easy-java-ee-microservices-with-payara.html\" target=\"_blank\" rel=\"noopener\">Easy Java EE Microservices with Payara Micro<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that Java EE is too heavyweight for use with Microservices, but that is simply not the case&#8230;especially if you only utilize the Java EE specifications that are required by &hellip;<\/p>\n","protected":false},"author":605,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1629],"class_list":["post-70977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-payara"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Easy Java EE Microservices with Payara Micro - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that\" \/>\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\/2017\/11\/easy-java-ee-microservices-payara-micro.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Easy Java EE Microservices with Payara Micro - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.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=\"2017-11-30T20:00:57+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=\"Josh Juneau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/javajuneau\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Josh Juneau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html\"},\"author\":{\"name\":\"Josh Juneau\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c8b1ce85156b06b3953341a9dfaae89a\"},\"headline\":\"Easy Java EE Microservices with Payara Micro\",\"datePublished\":\"2017-11-30T20:00:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html\"},\"wordCount\":722,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"Payara\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html\",\"name\":\"Easy Java EE Microservices with Payara Micro - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2017-11-30T20:00:57+00:00\",\"description\":\"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.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\\\/2017\\\/11\\\/easy-java-ee-microservices-payara-micro.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\":\"Easy Java EE Microservices with Payara Micro\"}]},{\"@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\\\/c8b1ce85156b06b3953341a9dfaae89a\",\"name\":\"Josh Juneau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g\",\"caption\":\"Josh Juneau\"},\"description\":\"Josh is an application developer and technical writer. He has authored several books for Apress, primarily focusing on Java development. Most recently, he has authored Java EE 7 Recipes, Introducing Java EE 7, and Java 8 Recipes. Josh is a member of the JCP, and he is on the JSF 2.3 Expert Group.\",\"sameAs\":[\"http:\\\/\\\/jj-blogger.blogspot.gr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/profile\\\/view?id=22074683\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/javajuneau\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/josh-juneau\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Easy Java EE Microservices with Payara Micro - Java Code Geeks","description":"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that","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\/2017\/11\/easy-java-ee-microservices-payara-micro.html","og_locale":"en_US","og_type":"article","og_title":"Easy Java EE Microservices with Payara Micro - Java Code Geeks","og_description":"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that","og_url":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2017-11-30T20:00:57+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":"Josh Juneau","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/javajuneau","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Josh Juneau","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html"},"author":{"name":"Josh Juneau","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c8b1ce85156b06b3953341a9dfaae89a"},"headline":"Easy Java EE Microservices with Payara Micro","datePublished":"2017-11-30T20:00:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html"},"wordCount":722,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["Payara"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html","url":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html","name":"Easy Java EE Microservices with Payara Micro - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2017-11-30T20:00:57+00:00","description":"Wondering how to get started with Java EE Microservices?\u00a0 It only takes a few quick steps to deploy a Microservice using Java EE APIs.\u00a0 Many think that","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2017\/11\/easy-java-ee-microservices-payara-micro.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\/2017\/11\/easy-java-ee-microservices-payara-micro.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":"Easy Java EE Microservices with Payara Micro"}]},{"@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\/c8b1ce85156b06b3953341a9dfaae89a","name":"Josh Juneau","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7410fb64f5d5278eb4bac42342d408f052eadb27f0b7773c8ca7de595c44cb15?s=96&d=mm&r=g","caption":"Josh Juneau"},"description":"Josh is an application developer and technical writer. He has authored several books for Apress, primarily focusing on Java development. Most recently, he has authored Java EE 7 Recipes, Introducing Java EE 7, and Java 8 Recipes. Josh is a member of the JCP, and he is on the JSF 2.3 Expert Group.","sameAs":["http:\/\/jj-blogger.blogspot.gr\/","https:\/\/www.linkedin.com\/profile\/view?id=22074683","https:\/\/x.com\/https:\/\/twitter.com\/javajuneau"],"url":"https:\/\/www.javacodegeeks.com\/author\/josh-juneau"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/70977","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\/605"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=70977"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/70977\/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=70977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=70977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=70977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}