juneau-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jamesbog...@apache.org
Subject [juneau] branch master updated: Javadocs.
Date Sun, 09 Dec 2018 23:07:55 GMT
This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 137c1fa  Javadocs.
137c1fa is described below

commit 137c1fa6d31e6133282ad47e05b259bacf11425a
Author: JamesBognar <jamesbognar@apache.org>
AuthorDate: Sun Dec 9 18:07:41 2018 -0500

    Javadocs.
---
 .../11.juneau-microservice-core/01.Overview.html   |  51 +-
 .../docs/Topics/12.juneau-microservice-jetty.html  |  15 +-
 .../12.juneau-microservice-jetty/01.Overview.html  |  61 ++
 .../02.LifecycleMethods.html                       | 106 +++
 .../01.ConfigApi.html => 03.Config.html}           |  12 +-
 ...esourceClasses.html => 04.ResourceClasses.html} |   0
 ...sses.html => 05.PredefinedResourceClasses.html} |   0
 ...iCustomization.html => 06.UiCustomization.html} |   0
 .../01.Extending.html => 07.Extending.html}        |   0
 .../01.Introduction.html                           |   0
 .../02.GettingStarted.html                         |   0
 .../02.GettingStarted/01.Installing.html           |   0
 .../02.GettingStarted/02.Running.html              |   0
 .../02.GettingStarted/03.Building.html             |   0
 .../03.Manifest.html                               |   0
 .../03.Manifest/01.ManifestApi.html                |   0
 .../04.Config.html                                 |   0
 .../04.Config/01.ConfigApi.html                    |   0
 .../05.ResourceClasses.html                        |   0
 .../06.PredefinedResourceClasses.html              |   0
 .../07.RestMicroservice.html                       |   0
 .../07.RestMicroservice/01.Extending.html          |   0
 .../08.UiCustomization.html                        |   0
 .../juneau-microservice-server.Installing.1.png    | Bin 0 -> 156973 bytes
 .../juneau-microservice-server.Installing.2.png    | Bin 0 -> 78192 bytes
 ...uneau-microservice-server.ResourceClasses.1.png | Bin 0 -> 42699 bytes
 .../juneau-microservice-server.Running.1.png       | Bin 0 -> 67578 bytes
 .../juneau-microservice.UiCustomization.1.png      | Bin 0 -> 56726 bytes
 .../14.juneau-examples-core/01.Examples.html       |   4 +-
 juneau-doc/src/main/javadoc/overview.html          | 965 ++++++++++++++++-----
 juneau-doc/src/main/javadoc/resources/docs.txt     |  27 +-
 .../src/main/javadoc/resources/fragments/toc.html  |  43 +-
 .../examples/rest/petstore/dto/PetTagNameSwap.java |  10 +-
 33 files changed, 970 insertions(+), 324 deletions(-)

diff --git a/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html b/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
index d993909..9ba5ee8 100644
--- a/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
+++ b/juneau-doc/docs/Topics/11.juneau-microservice-core/01.Overview.html
@@ -39,6 +39,9 @@
 			<li class='jc'>{@link oaj.microservice.Microservice} - The base microservice class.
 			<li class='jc'>{@link oaj.microservice.MicroserviceBuilder} - Builder for the microservice class.
 			<li class='jic'>{@link oaj.microservice.MicroserviceListener} - Interface for hooking into lifecyle events of the microservice.
+			<ul>
+				<li class='jc'>{@link oaj.microservice.BasicMicroserviceListener} - Adapter for MicroserviceListener class.
+			</ul>
 		</ul>
 	<li class='jp'>{@link oaj.microservice.console}
 		<ul>
@@ -63,51 +66,3 @@
 		}
 	}
 </p>
-<p>
-	The classes consist of the following methods:
-</p>
-<ul class='doctree'>
-	<li class='jc'>{@link oaj.microservice.MicroserviceBuilder}
-	<ul>
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#args(String...) args(String...)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#config(Config) config(Config)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#configName(String) configName(String)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#configStore(ConfigStore) configStore(ConfigStore)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#console(Scanner,PrintWriter) console(Scanner,PrintWriter)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#consoleCommands(ConsoleCommand...) consoleCommands(ConsoleCommand...)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#consoleEnabled(boolean) consoleEnabled(boolean)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#listener(MicroserviceListener) listener(MicroserviceListener)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#logConfig(LogConfig) logConfig(LogConfig)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#logger(Logger)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#manifest(Object)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#varContext(String, Object) varContext(String,Object)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceBuilder#vars(Class...) vars(Class...)} 
-	</ul>
-	<li class='jc'>{@link oaj.microservice.Microservice}
-	<ul>
-		<li class='jm'>{@link oaj.microservice.Microservice#init() init()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#start() start()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#startConsole() startConsole()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#join() join()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#stop() stop()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#stopConsole() stopConsole()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#exit() exit()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#kill() kill()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#getArgs() getArgs()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#getConfig() getConfig()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#getLogger() getLogger()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#getManifest() getManifest()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#getVarResolver() getVarResolver()} 
-		<li class='jm'>{@link oaj.microservice.Microservice#log(Level,String,Object...) log(Level,String,Object...)} 
-		<li class='jm'>{@link oaj.microservice.Microservice#out(MessageBundle,String,Object...) out(MessageBundle,String,Object...)} 
-		<li class='jm'>{@link oaj.microservice.Microservice#err(MessageBundle,String,Object...) err(MessageBundle,String,Object...)} 
-		<li class='jm'>{@link oaj.microservice.Microservice#onConfigChange(ConfigEvents) onConfigChange(ConfigEvents)} 
-		<li class='jm'>{@link oaj.microservice.Microservice#executeCommand(Args,Scanner,PrintWriter) executeCommand(Args,Scanner,PrintWriter)} 
-	</ul>
-	<li class='jic'>{@link oaj.microservice.MicroserviceListener}
-	<ul>
-		<li class='jm'>{@link oaj.microservice.MicroserviceListener#onConfigChange(Microservice,ConfigEvents) onConfigChange(Microservice,ConfigEvents)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceListener#onStart(Microservice) onStart(Microservice)} 
-		<li class='jm'>{@link oaj.microservice.MicroserviceListener#onStop(Microservice) onStop(Microservice)} 
-	</ul>
-</ul>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
index 632815b..0ea1e31 100644
--- a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
@@ -13,33 +13,28 @@
  ***************************************************************************************************************************/
  -->
 
-{todo} juneau-microservice-jetty
+{new} juneau-microservice-jetty
 
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
 		<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-		<xt>&lt;artifactId&gt;</xt>juneau-microservice-server<xt>&lt;/artifactId&gt;</xt>
+		<xt>&lt;artifactId&gt;</xt>juneau-microservice-jetty<xt>&lt;/artifactId&gt;</xt>
 		<xt>&lt;version&gt;</xt>{@property juneauVersion}<xt>&lt;/version&gt;</xt>
 	<xt>&lt;/dependency&gt;</xt>
 </p>	
 
 <h5 class='figure'>Java Library</h5>
 <p class='bpcode w500'>
-	juneau-microservice-server-{@property juneauVersion}.jar 
+	juneau-microservice-jetty-{@property juneauVersion}.jar 
 </p>	
 
 <h5 class='figure'>OSGi Module</h5>
 <p class='bpcode w500'>
-	org.apache.juneau.microservice.jetty.server_{@property juneauVersion}.jar 
-</p>	
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
-	my-microservice.zip 
+	org.apache.juneau.microservice.jetty_{@property juneauVersion}.jar 
 </p>	
 
 <p>
-	Juneau Microservice is an API for creating stand-alone executable jars that can be used to 
+	Juneau Microservice Jetty is an API for creating stand-alone executable jars that can be used to 
 	start lightweight configurable REST interfaces with all the power of the Juneau REST server and client APIs.
 </p>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html
new file mode 100644
index 0000000..42b057c
--- /dev/null
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Overview.html
@@ -0,0 +1,61 @@
+<!--
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *  
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+ -->
+
+{new} Overview
+
+<p>
+	The Jetty Microservice API consists of a combination of the Juneau Core, Server, and Client APIs and an embedded
+	Eclipse Jetty Servlet Container.  
+</p>
+<p>
+	The API builds upon the {@doc juneau-microservice-core Core Microservice} classes to produce easy-to-create and
+	easy-to-use microservices in a standard Java 1.8+ environment.
+</p>
+<p>
+	The <code>juneau-microservice-jetty</code> library consists of the following classes:
+</p>
+<ul class='doctree'>
+	<li class='jp'>{@link oaj.microservice.jetty}
+	<ul>
+		<li class='jc'>{@link oaj.microservice.jetty.JettyMicroservice} - The Jetty microservice class.
+		<li class='jc'>{@link oaj.microservice.jetty.JettyMicroserviceBuilder} - Builder for the microservice class.
+		<li class='jic'>{@link oaj.microservice.jetty.JettyMicroserviceListener} - Interface for hooking into lifecyle events of the microservice.
+		<ul>
+			<li class='jc'>{@link oaj.microservice.jetty.BasicJettyMicroserviceListener} - Adapter for JettyMicroserviceListener class.
+		</ul>
+		<li class='jic'>{@link oaj.microservice.jetty.JettyServerFactory} - Interface for defining custom Jetty servers.
+		<ul>
+			<li class='jc'>{@link oaj.microservice.jetty.BasicJettyServerFactory} - Adapter for JettyServerFactory class.
+		</ul>
+		 
+	</ul>
+</ul>
+
+<p>
+	The most-basic creation of a Jetty microservice from an entry-point method is shown below:
+</p>	
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+		<jk>public static void</jk> main(String[] args) {
+			JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+			;
+		}
+	}
+</p>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html
new file mode 100644
index 0000000..0917b97
--- /dev/null
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.LifecycleMethods.html
@@ -0,0 +1,106 @@
+<!--
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *  
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+ -->
+
+{new} Lifecycle Methods
+
+<p>
+	To review, the {@link oaj.microservice.Microservice} class contains the following lifecycle methods:
+</p>
+<ul class='doctree'>
+	<li class='jc'>{@link oaj.microservice.Microservice}
+	<ul>
+		<li class='jm'>{@link oaj.microservice.Microservice#start() start()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#startConsole() startConsole()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#join() join()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#stop() stop()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#stopConsole() stopConsole()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#exit() exit()} 
+		<li class='jm'>{@link oaj.microservice.Microservice#kill() kill()} 
+	</ul>
+</ul>
+<p>
+	The {@link oaj.microservice.jetty.JettyMicroservice} class which extends from {@link oaj.microservice.Microservice} 
+	provides the following additional lifecycle methods:
+</p>
+<ul class='doctree'>
+	<li class='jc'>{@link oaj.microservice.jetty.JettyMicroservice}
+	<ul>
+		<li class='jm'>{@link oaj.microservice.jetty.JettyMicroservice#createServer() createServer()} 
+		<li class='jm'>{@link oaj.microservice.jetty.JettyMicroservice#startServer() startServer()} 
+		<li class='jm'>{@link oaj.microservice.jetty.JettyMicroservice#destroyServer() destroyServer()} 
+	</ul>
+</ul>
+<p>
+	The additional lifecycle methods are typically not called directly, but are exposed to allow subclasses to
+	provide customized behavior for these events.  
+	For this reason, these methods are left as non-final so that they can be overridden.
+</p>
+<p>
+	A typical implementation of an app with lifecycle methods might look like the following:
+</p>
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+	
+		<jk>private static final</jk> JettyMicroservice <jsf>MICROSERVICE</jsf>;
+	
+		<jk>public static void</jk> main(String[] args) {
+			<jsf>MICROSERVICE</jsf> = JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+				.startConsole()               <jc>// Start console.</jc>
+				.join()                       <jc>// Join thread.</jc>
+			;
+		}
+		
+		<jk>public static void</jk> restart() {
+			<jsf>MICROSERVICE</jsf>.stop().start();
+		}
+		
+		<jk>public static void</jk> exit() {
+			<jsf>MICROSERVICE</jsf>.exit();
+		}
+	}
+</p>
+<p>
+	Similar to {@link oaj.microservice.Microservice#getInstance()}, the {@link oaj.microservice.jetty.JettyMicroservice#getInstance()}
+	also allows easy access to the microservice:
+</p>
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+	
+		<jk>public static void</jk> main(String[] args) {
+			JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+				.startConsole()               <jc>// Start console.</jc>
+				.join()                       <jc>// Join thread.</jc>
+			;
+		}
+		
+		<jk>public static void</jk> restart() {
+			JettyMicroservice.<jsm>getInstance</jsm>().stop().start();
+		}
+		
+		<jk>public static void</jk> exit() {
+			JettyMicroservice.<jsm>getInstance</jsm>().exit();
+		}
+	}
+</p>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
similarity index 95%
copy from juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
index 35499bd..d4659e1 100644
--- a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Config.html
@@ -13,7 +13,17 @@
  ***************************************************************************************************************************/
  -->
 
-Config File API
+{todo} Config
+
+<p>
+	The microservice config file is an external INI-style configuration file that is used to configure
+	your microservice.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+	<li class='link'>{@doc juneau-config}
+</ul>
+
 
 <p>
 	There are 3 primary ways of getting access to the config file.
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.ResourceClasses.html
similarity index 100%
copy from juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.ResourceClasses.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.PredefinedResourceClasses.html
similarity index 100%
copy from juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.PredefinedResourceClasses.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.UiCustomization.html
similarity index 100%
copy from juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.UiCustomization.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.Extending.html
similarity index 100%
copy from juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
copy to juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.Extending.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Introduction.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/01.Introduction.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/01.Introduction.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/01.Introduction.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/01.Installing.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/01.Installing.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/01.Installing.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/01.Installing.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/02.Running.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/02.Running.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/02.Running.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/02.Running.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/03.Building.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/03.Building.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/02.GettingStarted/03.Building.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/02.GettingStarted/03.Building.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest/01.ManifestApi.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest/01.ManifestApi.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/03.Manifest/01.ManifestApi.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/03.Manifest/01.ManifestApi.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config/01.ConfigApi.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/04.Config/01.ConfigApi.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/04.Config/01.ConfigApi.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/05.ResourceClasses.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/05.ResourceClasses.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/05.ResourceClasses.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/06.PredefinedResourceClasses.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/06.PredefinedResourceClasses.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/06.PredefinedResourceClasses.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice/01.Extending.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/07.RestMicroservice/01.Extending.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/07.RestMicroservice/01.Extending.html
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/08.UiCustomization.html
similarity index 100%
rename from juneau-doc/docs/Topics/12.juneau-microservice-jetty/08.UiCustomization.html
rename to juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/08.UiCustomization.html
diff --git a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png
new file mode 100755
index 0000000..4ea5cec
Binary files /dev/null and b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.1.png differ
diff --git a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png
new file mode 100755
index 0000000..9caeff9
Binary files /dev/null and b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Installing.2.png differ
diff --git a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png
new file mode 100644
index 0000000..91f7275
Binary files /dev/null and b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.ResourceClasses.1.png differ
diff --git a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png
new file mode 100644
index 0000000..9d75bda
Binary files /dev/null and b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice-server.Running.1.png differ
diff --git a/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png
new file mode 100644
index 0000000..490cf48
Binary files /dev/null and b/juneau-doc/docs/Topics/13.juneau-microservice-jetty-template/doc-files/juneau-microservice.UiCustomization.1.png differ
diff --git a/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html b/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
index a3219a8..a4f5bf6 100644
--- a/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
+++ b/juneau-doc/docs/Topics/14.juneau-examples-core/01.Examples.html
@@ -13,7 +13,7 @@
  ***************************************************************************************************************************/
  -->
 
-{todo} Examples
+{new} Examples
 
 <p>
 	The following shows the core examples provided:
@@ -23,7 +23,7 @@
 	<ul>
 		<li class='jc'>{@link oaj.examples.core.json.JsonSimpleExample} - JsonSerializer and JsonParser usage on serialize and deserialize simple Pojo bean.
 		<li class='jc'>{@link oaj.examples.core.json.JsonComplexExample} - JsonSerializer and JsonParser usage on serialize and deserialize complex Pojo bean.
-		<li class='jc'>{@link oaj.examples.core.json.JsonConfigurationExample} - TODO
+		<li class='jc'>{@link oaj.examples.core.json.JsonConfigurationExample} 
 	</ul>
 	<li class='jp'><code>org.apache.juneau.examples.core.xml</code>
 	<ul>
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index bde6ecc..ffddc04 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -406,35 +406,44 @@
 		<li><p class='new'><a class='doclink' href='#juneau-microservice-core.Logging'>Logging</a></p>
 		<li><p class='new'><a class='doclink' href='#juneau-microservice-core.Listeners'>Listeners</a></p>
 	</ol>
-	<li><p class='toc2 todo'><a class='doclink' href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
+	<li><p class='toc2 new'><a class='doclink' href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
 	<ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.Introduction'>Microservice Introduction</a></p>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.GettingStarted'>Getting Started</a></p>
+		<li><p class='new'><a class='doclink' href='#juneau-microservice-jetty.Overview'>Overview</a></p>
+		<li><p class='new'><a class='doclink' href='#juneau-microservice-jetty.LifecycleMethods'>Lifecycle Methods</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.Config'>Config</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+		<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.Extending'>Extending RestMicroservice</a></p>
+	</ol>
+	<li><p class='toc2 todo'><a class='doclink' href='#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
+	<ol>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.Introduction'>Microservice Introduction</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.GettingStarted'>Getting Started</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.GettingStarted.Installing'>Installing in Eclipse</a></p>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.GettingStarted.Running'>Running in Eclipse</a></p>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.GettingStarted.Building'>Building and Running from Command-Line</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.GettingStarted.Installing'>Installing in Eclipse</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.GettingStarted.Running'>Running in Eclipse</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.GettingStarted.Building'>Building and Running from Command-Line</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.Manifest'>Manifest File</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.Manifest'>Manifest File</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.Manifest.ManifestApi'>Manifest API</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.Manifest.ManifestApi'>Manifest API</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.Config'>Config</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.Config'>Config</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.Config.ConfigApi'>Config File API</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.Config.ConfigApi'>Config File API</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.RestMicroservice'>RestMicroservice</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.ResourceClasses'>Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.RestMicroservice'>RestMicroservice</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty.RestMicroservice.Extending'>Extending RestMicroservice</a></p>
+			<li><p class=''><a class='doclink' href='#juneau-microservice-jetty-template.RestMicroservice.Extending'>Extending RestMicroservice</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+		<li><p class='todo'><a class='doclink' href='#juneau-microservice-jetty-template.UiCustomization'>UI Customization</a></p>
 	</ol>
-	<li><p class='toc2 todo'><a class='doclink' href='#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
 	<li><p class='toc2 '><a class='doclink' href='#juneau-examples-core'>juneau-examples-core</a></p>
 	<ol>
-		<li><p class='todo'><a class='doclink' href='#juneau-examples-core.Examples'>Examples</a></p>
+		<li><p class='new'><a class='doclink' href='#juneau-examples-core.Examples'>Examples</a></p>
 	</ol>
 	<li><p class='toc2 todo'><a class='doclink' href='#juneau-examples-rest'>juneau-examples-rest</a></p>
 	<ol>
@@ -23525,6 +23534,9 @@
 			<li class='jc'>{@link org.apache.juneau.microservice.Microservice} - The base microservice class.
 			<li class='jc'>{@link org.apache.juneau.microservice.MicroserviceBuilder} - Builder for the microservice class.
 			<li class='jic'>{@link org.apache.juneau.microservice.MicroserviceListener} - Interface for hooking into lifecyle events of the microservice.
+			<ul>
+				<li class='jc'>{@link org.apache.juneau.microservice.BasicMicroserviceListener} - Adapter for MicroserviceListener class.
+			</ul>
 		</ul>
 	<li class='jp'>{@link org.apache.juneau.microservice.console}
 		<ul>
@@ -23549,54 +23561,6 @@
 		}
 	}
 </p>
-<p>
-	The classes consist of the following methods:
-</p>
-<ul class='doctree'>
-	<li class='jc'>{@link org.apache.juneau.microservice.MicroserviceBuilder}
-	<ul>
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#args(String...) args(String...)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#config(Config) config(Config)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#configName(String) configName(String)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#configStore(ConfigStore) configStore(ConfigStore)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#console(Scanner,PrintWriter) console(Scanner,PrintWriter)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#consoleCommands(ConsoleCommand...) consoleCommands(ConsoleCommand...)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#consoleEnabled(boolean) consoleEnabled(boolean)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#listener(MicroserviceListener) listener(MicroserviceListener)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#logConfig(LogConfig) logConfig(LogConfig)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#logger(Logger)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#manifest(Object)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#varContext(String, Object) varContext(String,Object)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceBuilder#vars(Class...) vars(Class...)} 
-	</ul>
-	<li class='jc'>{@link org.apache.juneau.microservice.Microservice}
-	<ul>
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#init() init()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#start() start()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#startConsole() startConsole()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#join() join()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#stop() stop()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#stopConsole() stopConsole()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#exit() exit()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#kill() kill()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getArgs() getArgs()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getConfig() getConfig()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getLogger() getLogger()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getManifest() getManifest()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getVarResolver() getVarResolver()} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#log(Level,String,Object...) log(Level,String,Object...)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#out(MessageBundle,String,Object...) out(MessageBundle,String,Object...)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#err(MessageBundle,String,Object...) err(MessageBundle,String,Object...)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#onConfigChange(ConfigEvents) onConfigChange(ConfigEvents)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#executeCommand(Args,Scanner,PrintWriter) executeCommand(Args,Scanner,PrintWriter)} 
-	</ul>
-	<li class='jic'>{@link org.apache.juneau.microservice.MicroserviceListener}
-	<ul>
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceListener#onConfigChange(Microservice,ConfigEvents) onConfigChange(Microservice,ConfigEvents)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceListener#onStart(Microservice) onStart(Microservice)} 
-		<li class='jm'>{@link org.apache.juneau.microservice.MicroserviceListener#onStop(Microservice) onStop(Microservice)} 
-	</ul>
-</ul>
 </div><!-- END: 11.1 - juneau-microservice-core.Overview -->
 
 <!-- ==================================================================================================== -->
@@ -24323,154 +24287,719 @@
 
 <!-- ==================================================================================================== -->
 
-<h2 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty' id='juneau-microservice-jetty'>12 - juneau-microservice-jetty</a></h2>
+<h2 class='topic new' onclick='toggle(this)'><a href='#juneau-microservice-jetty' id='juneau-microservice-jetty'>12 - juneau-microservice-jetty</a></h2>
 <div class='topic'><!-- START: 12 - juneau-microservice-jetty -->
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
 		<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-		<xt>&lt;artifactId&gt;</xt>juneau-microservice-server<xt>&lt;/artifactId&gt;</xt>
+		<xt>&lt;artifactId&gt;</xt>juneau-microservice-jetty<xt>&lt;/artifactId&gt;</xt>
 		<xt>&lt;version&gt;</xt>{@property juneauVersion}<xt>&lt;/version&gt;</xt>
 	<xt>&lt;/dependency&gt;</xt>
 </p>	
 
 <h5 class='figure'>Java Library</h5>
 <p class='bpcode w500'>
-	juneau-microservice-server-{@property juneauVersion}.jar 
+	juneau-microservice-jetty-{@property juneauVersion}.jar 
 </p>	
 
 <h5 class='figure'>OSGi Module</h5>
 <p class='bpcode w500'>
-	org.apache.juneau.microservice.jetty.server_{@property juneauVersion}.jar 
-</p>	
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
-	my-microservice.zip 
+	org.apache.juneau.microservice.jetty_{@property juneauVersion}.jar 
 </p>	
 
 <p>
-	Juneau Microservice is an API for creating stand-alone executable jars that can be used to 
+	Juneau Microservice Jetty is an API for creating stand-alone executable jars that can be used to 
 	start lightweight configurable REST interfaces with all the power of the Juneau REST server and client APIs.
 </p>
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Introduction' id='juneau-microservice-jetty.Introduction'>12.1 - Microservice Introduction</a></h3>
-<div class='topic'><!-- START: 12.1 - juneau-microservice-jetty.Introduction -->
+<h3 class='topic new' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Overview' id='juneau-microservice-jetty.Overview'>12.1 - Overview</a></h3>
+<div class='topic'><!-- START: 12.1 - juneau-microservice-jetty.Overview -->
 <p>
-	The Microservice API consists of a combination of the Juneau Core, Server, and Client APIs and an embedded
+	The Jetty Microservice API consists of a combination of the Juneau Core, Server, and Client APIs and an embedded
 	Eclipse Jetty Servlet Container.  
-	<br>It includes all libraries needed to execute in a Java 1.7+ environment.
 </p>
 <p>
-	Features include:
+	The API builds upon the {@doc juneau-microservice-core Core Microservice} classes to produce easy-to-create and
+	easy-to-use microservices in a standard Java 1.8+ environment.
 </p>
-<ul class='spaced-list'>
-	<li>
-		An out-of-the-box zipped Eclipse project to get started quickly.
-	<li>
-		Packaged as a simple executable jar and configuration file.
-	<li>
-		All the power of the Juneau ecosystem for defining REST servlets and clients with the ability to 
-		serialize and parse POJOs as HTML, JSON, XML, RDF, URL-Encoding, and others.
-	<li>
-		An extensible API that allows you to hook into various lifecycle events.
-	<li>
-		Simple-to-use APIs for accessing manifest file entries, command-line arguments, and external configuration 
-		file properties.
-	<li>
-		Predefined REST resources for configuring microservice and accessing log files.
-</ul>
 <p>
-	The <code>juneau-microservice-server</code> library consists of the following classes:
+	The <code>juneau-microservice-jetty</code> library consists of the following classes:
 </p>
 <ul class='doctree'>
-	<li class='jac'>
-		{@link org.apache.juneau.microservice.Microservice} 
-		- Defines basic lifecycle methods for microservices in general.
+	<li class='jp'>{@link org.apache.juneau.microservice.jetty}
+	<ul>
+		<li class='jc'>{@link org.apache.juneau.microservice.jetty.JettyMicroservice} - The Jetty microservice class.
+		<li class='jc'>{@link org.apache.juneau.microservice.jetty.JettyMicroserviceBuilder} - Builder for the microservice class.
+		<li class='jic'>{@link org.apache.juneau.microservice.jetty.JettyMicroserviceListener} - Interface for hooking into lifecyle events of the microservice.
 		<ul>
-			<li class='jc'>
-				{@link org.apache.juneau.microservice.RestMicroservice}
-				- Defines additional lifecycle methods for REST microservices.
-				<br>Starts up an externally-configured Jetty server, registers servlets, and sets up 
-				other features such as logging.  
+			<li class='jc'>{@link org.apache.juneau.microservice.jetty.BasicJettyMicroserviceListener} - Adapter for JettyMicroserviceListener class.
 		</ul>
+		<li class='jic'>{@link org.apache.juneau.microservice.jetty.JettyServerFactory} - Interface for defining custom Jetty servers.
+		<ul>
+			<li class='jc'>{@link org.apache.juneau.microservice.jetty.BasicJettyServerFactory} - Adapter for JettyServerFactory class.
+		</ul>
+		 
+	</ul>
 </ul>
-</div><!-- END: 12.1 - juneau-microservice-jetty.Introduction -->
+
+<p>
+	The most-basic creation of a Jetty microservice from an entry-point method is shown below:
+</p>	
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+		<jk>public static void</jk> main(String[] args) {
+			JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+			;
+		}
+	}
+</p>
+</div><!-- END: 12.1 - juneau-microservice-jetty.Overview -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.GettingStarted' id='juneau-microservice-jetty.GettingStarted'>12.2 - Getting Started</a></h3>
-<div class='topic'><!-- START: 12.2 - juneau-microservice-jetty.GettingStarted -->
+<h3 class='topic new' onclick='toggle(this)'><a href='#juneau-microservice-jetty.LifecycleMethods' id='juneau-microservice-jetty.LifecycleMethods'>12.2 - Lifecycle Methods</a></h3>
+<div class='topic'><!-- START: 12.2 - juneau-microservice-jetty.LifecycleMethods -->
 <p>
-	The <l>my-microservice.zip</l> file is a zipped eclipse project that includes everything you 
-	need to create a REST microservice in an Eclipse workspace.
+	To review, the {@link org.apache.juneau.microservice.Microservice} class contains the following lifecycle methods:
+</p>
+<ul class='doctree'>
+	<li class='jc'>{@link org.apache.juneau.microservice.Microservice}
+	<ul>
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#start() start()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#startConsole() startConsole()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#join() join()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#stop() stop()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#stopConsole() stopConsole()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#exit() exit()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.Microservice#kill() kill()} 
+	</ul>
+</ul>
+<p>
+	The {@link org.apache.juneau.microservice.jetty.JettyMicroservice} class which extends from {@link org.apache.juneau.microservice.Microservice} 
+	provides the following additional lifecycle methods:
+</p>
+<ul class='doctree'>
+	<li class='jc'>{@link org.apache.juneau.microservice.jetty.JettyMicroservice}
+	<ul>
+		<li class='jm'>{@link org.apache.juneau.microservice.jetty.JettyMicroservice#createServer() createServer()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.jetty.JettyMicroservice#startServer() startServer()} 
+		<li class='jm'>{@link org.apache.juneau.microservice.jetty.JettyMicroservice#destroyServer() destroyServer()} 
+	</ul>
+</ul>
+<p>
+	The additional lifecycle methods are typically not called directly, but are exposed to allow subclasses to
+	provide customized behavior for these events.  
+	For this reason, these methods are left as non-final so that they can be overridden.
+</p>
+<p>
+	A typical implementation of an app with lifecycle methods might look like the following:
+</p>
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+	
+		<jk>private static final</jk> JettyMicroservice <jsf>MICROSERVICE</jsf>;
+	
+		<jk>public static void</jk> main(String[] args) {
+			<jsf>MICROSERVICE</jsf> = JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+				.startConsole()               <jc>// Start console.</jc>
+				.join()                       <jc>// Join thread.</jc>
+			;
+		}
+		
+		<jk>public static void</jk> restart() {
+			<jsf>MICROSERVICE</jsf>.stop().start();
+		}
+		
+		<jk>public static void</jk> exit() {
+			<jsf>MICROSERVICE</jsf>.exit();
+		}
+	}
+</p>
+<p>
+	Similar to {@link org.apache.juneau.microservice.Microservice#getInstance()}, the {@link org.apache.juneau.microservice.jetty.JettyMicroservice#getInstance()}
+	also allows easy access to the microservice:
+</p>
+<p class='bpcode w800'>
+	<jk>public class</jk> App {
+	
+		<jk>public static void</jk> main(String[] args) {
+			JettyMicroservice
+				.<jsm>create</jsm>()                     <jc>// Create builder.</jc>
+				.args(args)                   <jc>// Pass in args.</jc>
+				.servlets(RootResource.<jk>class</jk>) <jc>// A Juneau RestServlet class.</jc>
+				.build()                      <jc>// Create microservice.</jc>
+				.start()                      <jc>// Start microservice.</jc>
+				.startConsole()               <jc>// Start console.</jc>
+				.join()                       <jc>// Join thread.</jc>
+			;
+		}
+		
+		<jk>public static void</jk> restart() {
+			JettyMicroservice.<jsm>getInstance</jsm>().stop().start();
+		}
+		
+		<jk>public static void</jk> exit() {
+			JettyMicroservice.<jsm>getInstance</jsm>().exit();
+		}
+	}
 </p>
+</div><!-- END: 12.2 - juneau-microservice-jetty.LifecycleMethods -->
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.GettingStarted.Installing' id='juneau-microservice-jetty.GettingStarted.Installing'>12.2.1 - Installing in Eclipse</a></h4>
-<div class='topic'><!-- START: 12.2.1 - juneau-microservice-jetty.GettingStarted.Installing -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Config' id='juneau-microservice-jetty.Config'>12.3 - Config</a></h3>
+<div class='topic'><!-- START: 12.3 - juneau-microservice-jetty.Config -->
 <p>
-	Follow these instructions to create a new template project in Eclipse.
-</p>		
-<ol class='spaced-list'>
-	<li>
-		Download the latest microservice-project zip file (e.g. <l>my-microservice.zip</l>).
-	<li>
-		In your Eclipse workspace, go to <b>File -&gt; Import -&gt; General -&gt; Existing Projects into Workspace</b> 
-		and select the zip file and click <b>Finish</b>.
-		<br><br>
-		<img class='bordered' src='doc-files/juneau-microservice-server.Installing.1.png' style='width:549px'>
-	<li>
-		In your workspace, you should now see the following project:
-		<br><br>
-		<img class='bordered' src='doc-files/juneau-microservice-server.Installing.2.png' style='width:299px'>
-</ol>
+	The microservice config file is an external INI-style configuration file that is used to configure
+	your microservice.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+	<li class='link'>{@doc juneau-config}
+</ul>
+
+
 <p>
-	The important elements in this project are:
+	There are 3 primary ways of getting access to the config file.
 </p>
-<ul class='spaced-list'>
-	<li>
-		<l>RootResources.java</l> - The top-level REST resource. 
-		<br>This class routes HTTP requests to child resources:
-		<br><br>
+<ul class='doctree'>
+	<li class='jm'>{@link org.apache.juneau.microservice.Microservice#getConfig()} 
+		<br>Any {@doc DefaultRestSvlVariables initialization-time variables} can be used.
+	<li class='jm'>{@link org.apache.juneau.rest.RestContext#getConfig()} 
+		<br>Any {@doc DefaultRestSvlVariables initialization-time variables} can be used.
+		<h5 class='figure'>Example usage:</h5>
 		<p class='bcode w800'>
-	<ja>@RestResource</ja>(
-		path=<js>"/"</js>,
-		title=<js>"My Microservice"</js>,
-		description=<js>"Top-level resources page"</js>,
-		htmldoc=<ja>@HtmlDoc</ja>(
-			widgets={
-				ContentTypeMenuItem.<jk>class</jk>,
-				StyleMenuItem.<jk>class</jk>
-			},
-			navlinks={
-				<js>"options: servlet:/?method=OPTIONS"</js>
-			}
-		),
-		children={
-			HelloWorldResource.<jk>class</jk>,
-			ConfigResource.<jk>class</jk>,
-			LogsResource.<jk>class</jk>
+	<cc>#-------------------------------</cc>
+	<cc># Properties for MyHelloResource </cc>
+	<cc>#-------------------------------</cc>
+	<cs>[MyHelloResource]</cs>
+	<ck>greeting</ck> = <cv>Hello world!</cv> 
+				</p>
+				<p class='bcode w800'>
+	<ja>@RestResource</ja>(...)
+	<jk>public class</jk> MyHelloResource <jk>extends</jk> BasicRestServlet {
+		<jc>// Access config file when initializing fields.</jc>
+		<jk>private</jk> String greeting = getConfig().getString(<js>"MyHelloResource/greeting"</js>); 
+		
+		<jc>// Or access config file in servlet init method.</jc>
+		<ja>@Override</ja> <jc>/* Servlet */</jc>
+		<jk>public void</jk> init() {
+			String greeting = getConfig().getString(<js>"MyHelloResource/greeting"</js>); 
 		}
-	)
-	<jk>public class</jk> RootResources <jk>extends</jk> BasicRestServletJenaGroup {
-		<jc>// No code</jc>
-	}
+	}		
 		</p>
-	<li>
-		<l>my-microservice.cfg</l> - The external configuration file. 
-		<br>Contains various useful settings.
-		<br>Can be used for your own resource configurations.
-		<br><br>
+		<p>
+			Additional user-defined variables can be defined at this level by adding a  
+			{@link org.apache.juneau.rest.annotation.HookEvent#INIT} hook method
+			and using the {@link org.apache.juneau.rest.RestContextBuilder#vars(Class...)} method.
+		</p>
+	<li class='jm'>
+		{@link org.apache.juneau.rest.RestRequest#getConfig()} 
+		- An instance method to access it from inside a REST method.
+		<br>Any {@doc DefaultRestSvlVariables initialization-time or request-time variables} can be used.
+		
+		<h5 class='figure'>Example usage:</h5>
 		<p class='bcode w800'>
-	<cc>#=======================================================================================================================
-	# Basic configuration file for REST microservices
-	# Subprojects can use this as a starting point.
-	#=======================================================================================================================</cc>
-	
+	<cc>#-----------------------------</cc>
+	<cc># Contents of microservice.cfg </cc>
+	<cc>#-----------------------------</cc>
+	<cs>[MyHelloResource]</cs>
+	<ck>greeting</ck> = <cv>Hello $RP{person}!</cv> 
+	<ck>localizedGreeting</ck> = <cv>$L{HelloMessage,$RP{person}}</cv> 
+				</p>
+				<p class='bcode w800'>
+	<cc>#---------------------------------</cc>
+	<cc># Contents of MyHelloResource.java </cc>
+	<cc>#---------------------------------</cc>
+	<ja>@RestResource</ja>(
+		path=<js>"/hello"</js>,
+		messages=<js>"nls/Messages"</js>,
+		...
+	)
+	<jk>public class</jk> MyHelloResource <jk>extends</jk> BasicRestServlet {
+
+		<jd>/** Standard hello message. */</jd>
+		<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/{person}"</js>)
+		<jk>public</jk> String sayHello(RestRequest req) {
+			<jk>return</jk> req.getConfig().getString(<js>"MyHelloResource/greeting"</js>);
+		}
+
+		<jd>/** Hello message in users language. */</jd>
+		<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/localized/{person}"</js>)
+		<jk>public</jk> String sayLocalizedHello(RestRequest req) {
+			<jk>return</jk> req.getConfig().getString(<js>"MyHelloResource/localizedGreeting"</js>);
+		}
+	}		
+		</p>
+		<p class='bcode w800'>
+	<cc>#---------------------------------------</cc>
+	<cc># Contents of nls/Messages_en.properties </cc>
+	<cc>#---------------------------------------</cc>
+	<ck>MyHelloResource.HelloMessage</ck> = <cv>Hello {0}!</cv> 
+		</p>
+		<p>
+			Additional user-defined variables can be defined at this level by overriding the 
+			{@link org.apache.juneau.rest.RestContextBuilder#vars(Class...)} method.
+		</p>
+</ul>
+<p>
+	That <l>sayLocalizedHello()</l> example might need some explanation since there's a lot going on there.
+	<br>Here's what happens when an HTTP call is made to <l>GET /hello/localized/Bob</l>:
+</p>
+<ol class='spaced-list'>
+	<li>
+		The HTTP call matches the <l>/hello</l> path on the <l>MyHelloResource</l> class.
+	<li>
+		The HTTP call matches the <l>/localized/{person}</l> path on the <l>sayLocalizedHello()</l> method.
+	<li>
+		The request attribute <l>person</l> gets assigned the value <l>"Bob"</l>.
+	<li>
+		The call to <l>req.getConfig().getString("MyHelloResource/localizedGreeting")</l> 
+		finds the value <l>"$L{HelloMessage,$RP{person}}"</l>.
+	<li>
+		The arguments in the <l>$L{}</l> variable get resolved, resulting in <l>"$L{HelloMessage,Bob}"</l>.
+	<li>
+		The <l>$L{}</l> variable gets resolved to the message <l>"Hello {0}!"</l> in the localized properties 
+		file of the servlet based on the <l>Accept-Language</l> header on the request.
+	<li>
+		The arguments get replaced in the message resulting in <l>"Hello Bob!"</l>. 
+	<li>
+		The resulting message <l>"Hello Bob!"</l> is returned as a POJO to be serialized to whatever content 
+		type was specified on the <l>Accept</l> header on the request.
+</ol>
+<p>
+	This particular example is needlessly complex, but it gives an idea of how variables can be used 
+	recursively to produce sophisticated results
+</p>
+</div><!-- END: 12.3 - juneau-microservice-jetty.Config -->
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.ResourceClasses' id='juneau-microservice-jetty.ResourceClasses'>12.4 - Resource Classes</a></h3>
+<div class='topic'><!-- START: 12.4 - juneau-microservice-jetty.ResourceClasses -->
+<p>
+	Now let's take a look at the resource classes themselves.  
+	<br>The top-level page...
+</p>
+<p class='bpcode w800'>
+	http://localhost:10000
+</p>			
+<img class='bordered w800' src='doc-files/juneau-microservice-server.Running.1.png'>
+<p>
+	...is generated by this class...
+<p class='bpcode w800'>
+	<ja>@RestResource</ja>(
+		path=<js>"/"</js>,
+		title=<js>"My Microservice"</js>,
+		description=<js>"Top-level resources page"</js>,
+		htmldoc=<ja>@HtmlDoc</ja>(
+			navlinks={
+				<js>"options: servlet:/?method=OPTIONS"</js>
+			}
+		),
+		children={
+			HelloWorldResource.<jk>class</jk>,
+			ConfigResource.<jk>class</jk>,
+			LogsResource.<jk>class</jk>
+		}
+	)
+	<jk>public class</jk> RootResources <jk>extends</jk> BasicRestServletJenaGroup {
+		<jc>// No code! </jc>
+	}
+</p>
+<ul class='spaced-list'>
+	<li>
+		The </l>title</l> and <l>description</l> annotations define the titles on the page.
+		<br>These can be globalized using <l>$L{...}</l> variables, or by defining specially-named properties in the 
+		properties file for the resource.
+	<li>
+		In this case, the <l>path</l> annotation defines the context root of your application since it was 
+		not specified in the manifest or config file.
+		<br>Therefore, this resource is mapped to <l>http://localhost:10000</l>.
+	<li>
+		The <l>children</l> annotation make up the list of child resources.
+		<br>These child resources can be anything that extends from <l>Servlet</l>, although usually
+		they will be subclasses of {@link org.apache.juneau.rest.BasicRestServlet} or other resource groups.
+</ul>
+<p>
+	If you click the <l>helloWorld</l> link in your application, you'll get a simple hello world message:
+</p>
+<p class='bpcode w800'>
+	http://localhost:10000/helloWorld
+</p>			
+<img class='bordered w800' src='doc-files/juneau-microservice-server.ResourceClasses.1.png'>
+<p>
+	...which is generated by this class...
+</p>
+<p class='bpcode w800'>
+	<ja>@RestResource</ja>(
+		path=<js>"/helloWorld"</js>,
+		title=<js>"Hello World example"</js>,
+		description=<js>"Simplest possible REST resource"</js>
+	)
+	<jk>public class</jk> HelloWorldResource <jk>extends</jk> BasicRestServlet {
+	
+		<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>)
+		<jk>public</jk> String sayHello() {
+			<jk>return</jk> <js>"Hello world!"</js>;
+		}
+	}		
+</p>
+</div><!-- END: 12.4 - juneau-microservice-jetty.ResourceClasses -->
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.PredefinedResourceClasses' id='juneau-microservice-jetty.PredefinedResourceClasses'>12.5 - Predefined Resource Classes</a></h3>
+<div class='topic'><!-- START: 12.5 - juneau-microservice-jetty.PredefinedResourceClasses -->
+<p>
+	The following predefined resource classes are also provided for easy inclusion into your microservice:
+</p>
+<ul class='doctree'>
+	<li class='jc'>{@link org.apache.juneau.microservice.resources.ConfigResource}
+		- View and modify the external INI config file.
+	<li class='jc'>{@link org.apache.juneau.microservice.resources.DirectoryResource}
+		- View and modify file system directories.
+	<li class='jc'>{@link org.apache.juneau.microservice.resources.LogsResource}
+		- View and control generated log files.
+	<li class='jc'>{@link org.apache.juneau.microservice.resources.SampleRootResource}
+		- A sample root resource class to get started from.
+	<li class='jc'>{@link org.apache.juneau.microservice.resources.ShutdownResource}
+		- Shutdown and/or restart the JVM.
+</ul>
+</div><!-- END: 12.5 - juneau-microservice-jetty.PredefinedResourceClasses -->
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.UiCustomization' id='juneau-microservice-jetty.UiCustomization'>12.6 - UI Customization</a></h3>
+<div class='topic'><!-- START: 12.6 - juneau-microservice-jetty.UiCustomization -->
+<p>
+	The Microservice project contains a <code>files/htdocs</code> working directly folder with predefined stylesheets and
+	images.
+</p>
+<img style='width:200px' src='doc-files/juneau-microservice.UiCustomization.1.png'>
+<p>
+	These files can be used to tailor the look-and-feel of your microservice.
+</p>
+<p class='bpcode w800'>
+	http://localhost:10000/helloWorld
+</p>
+<img class='bordered w800' src='doc-files/juneau-rest-server.UiCustomization.1.png'>
+<p>
+	The REST configuration section of your microservice configuration file can be used to tailor the header and footer on the pages:
+</p>
+<p class='bpcode w800'>
+	<cc>#=======================================================================================================================
+	# REST settings
+	#=======================================================================================================================</cc>
+	<cs>[REST]</cs>
+	
+	<ck>staticFiles</ck> = <cv>htdocs:files/htdocs</cv>
+	
+	<cc># Stylesheet to use for HTML views.</cc>
+	<ck>theme</ck> = <cv>servlet:/htdocs/themes/devops.css</cv>
+	
+	<ck>headerIcon</ck> = <cv>servlet:/htdocs/images/juneau.png</cv>
+	<ck>headerLink</ck> = <cv>http://juneau.apache.org</cv>
+	<ck>footerIcon</ck> = <cv>servlet:/htdocs/images/asf.png</cv>
+	<ck>footerLink</ck> = <cv>http://www.apache.org</cv>
+	
+	<ck>favicon</ck> = <cv>$C{REST/headerIcon}</cv>
+	<ck>header</ck> = 
+		<cv>&lt;a href='$U{$C{REST/headerLink}}'&gt;</cv>
+			<cv>&lt;img src='$U{$C{REST/headerIcon}}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/&gt;</cv>
+		<cv>&lt;/a&gt;</cv>
+	<ck>footer</ck> = 
+		<cv>&lt;a href='$U{$C{REST/footerLink}}'&gt;</cv>
+			<cv>&lt;img src='$U{$C{REST/footerIcon}}' style='float:right;padding-right:20px;height:32px'/&gt;</cv>
+		<cv>&lt;/a&gt;</cv>
+</p>
+<p>
+	The {@link org.apache.juneau.rest.BasicRestConfig} interface (which defines the default settings for {@link org.apache.juneau.rest.BasicRestServlet} 
+	pulls in this information using {@link org.apache.juneau.config.vars.ConfigVar $C} and {@link org.apache.juneau.rest.vars.UrlVar $U} variables:
+</p>
+<p class='bpcode w800'>
+	<ja>@RestResource</ja>(
+		...
+		<jc>// HTML-page specific settings</jc>
+		htmldoc=<ja>@HtmlDoc</ja>(
+	
+			<jc>// Default page header contents.</jc>
+			header={
+				<js>"&lt;h1&gt;$R{resourceTitle}&lt;/h1&gt;"</js>,  <jc>// Use @RestResource(title)</jc>
+				<js>"&lt;h2&gt;$R{methodSummary,resourceDescription}&lt;/h2&gt;"</js>, <jc>// Use either @RestMethod(summary) or @RestResource(description)</jc>
+				<js>"$C{REST/header}"</js>  <jc>// Extra header HTML defined in external config file.</jc>
+			},
+	
+			<jc>// Default stylesheet to use for the page.
+			// Can be overridden from external config file.
+			// Default is DevOps look-and-feel (aka Depression look-and-feel).</jc>
+			stylesheet=<js>"$C{REST/theme,servlet:/htdocs/themes/devops.css}"</js>,
+	
+			<jc>// Default contents to add to the &lt;head&gt; section of the HTML page.
+			// Use it to add a favicon link to the page.</jc>
+			head={
+				<js>"&lt;link rel='icon' href='$U{$C{REST/favicon}}'/&gt;"</js>
+			},
+	
+			<jc>// No default page footer contents.
+			// Can be overridden from external config file.</jc>
+			footer=<js>"$C{REST/footer}"</js>
+		),
+	
+		<jc>// Optional external configuration file.</jc>
+		config=<js>"$S{juneau.configFile}"</js>,
+	
+		<jc>// These are static files that are served up by the servlet under the specified sub-paths.
+		// For example, "/servletPath/htdocs/javadoc.css" resolves to the file "[servlet-package]/htdocs/javadoc.css"
+		// By default, we define static files through the external configuration file.</jc>
+		staticFiles=<js>"$C{REST/staticFiles}"</js>
+	)
+	<jk>public interface</jk> BasicRestConfig {}
+</p>
+<p>
+	Note that the <code>files/htdocs</code> directory is mapped to <js>"servlet:/htdocs"</js> using the <code>staticFiles</code>
+	setting.  This allows those files to be served up through the servlet through the URL <js>"/[servlet-path]/htdocs"</js>
+</p>
+<p>
+	The theme files are externally accessible and can be modified to produce any look-and-feel you desire.
+	The microservice still works without the files directory.  An embedded <code>devops.css</code> is included in the jar as a default spreadsheet.
+</p>
+<p>
+	If you're testing out changes in the theme stylesheets, you may want to set the following system property that prevents caching of those files so 
+	that you don't need to restart the microservice each time a change is made:
+</p>
+<p class='bpcode w800'>
+	<cc>#=======================================================================================================================
+	# System properties
+	#-----------------------------------------------------------------------------------------------------------------------
+	# These are arbitrary system properties that are set during startup.
+	#=======================================================================================================================</cc>
+	<cs>[SystemProperties]</cs>
+	
+	<cc># Disable classpath resource caching.
+	# Useful if you're attached using a debugger and you're modifying classpath resources while running.</cc>
+	<ck>RestContext.useClasspathResourceCaching.b</ck> = <cv>false</cv>
+
+</p>
+</div><!-- END: 12.6 - juneau-microservice-jetty.UiCustomization -->
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Extending' id='juneau-microservice-jetty.Extending'>12.7 - Extending RestMicroservice</a></h3>
+<div class='topic'><!-- START: 12.7 - juneau-microservice-jetty.Extending -->
+<p>
+	This example shows how the {@link org.apache.juneau.microservice.RestMicroservice} class
+	can be extended to implement lifecycle listener methods or override existing methods.
+	<br>We'll create a new class <l>com.foo.SampleCustomRestMicroservice</l>.
+</p>
+<p>
+	First, the manifest file needs to be modified to point to our new microservice:
+</p>
+<p class='bpcode w800'>
+	<mk>Main-Class:</mk> com.foo.SampleCustomRestMicroservice
+</p>
+<p>
+	Then we define the following class:
+</p>
+<p class='bpcode w800'>
+	<jd>/**
+	 * Sample subclass of a RestMicroservice that provides customized behavior.
+	 * This class must be specified in the Main-Class entry in the manifest file and optionally
+	 * 	a Main-ConfigFile entry.
+	 */</jd>
+	<jk>public class</jk> SampleCustomRestMicroservice <jk>extends</jk> RestMicroservice {
+	
+		<jd>/**
+		 * Must implement a main method and call start()!
+		 */</jd>
+		<jk>public static void</jk> main(String[] args) <jk>throws</jk> Exception {
+			<jk>new</jk> SampleCustomRestMicroservice(args).start().join();
+		}
+	
+		<jd>/**
+		 * Must implement a constructor!
+		 * 
+		 * <ja>@param</ja> args Command line arguments. 
+		 * <ja>@throws</ja> Exception 
+		 */</jd>
+		<jk>public</jk> SampleCustomRestMicroservice(String[] args) <jk>throws</jk> Exception {
+			<jk>super</jk>(args);
+		}
+</p>
+<p>
+	The microservice APIs provide several useful methods that can be used or extended.
+</p>
+<h5 class='section'>See Also:</h5>
+<ul class='doctree'>
+	<li class='jac'>{@link org.apache.juneau.microservice.Microservice}
+	<li class='jc'>{@link org.apache.juneau.microservice.RestMicroservice}
+</ul>
+</div><!-- END: 12.7 - juneau-microservice-jetty.Extending -->
+</div><!-- END: 12 - juneau-microservice-jetty -->
+
+<!-- ==================================================================================================== -->
+
+<h2 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template' id='juneau-microservice-jetty-template'>13 - juneau-microservice-jetty-template</a></h2>
+<div class='topic'><!-- START: 13 - juneau-microservice-jetty-template -->
+<h5 class='figure'>Maven Dependency</h5>
+<p class='bpcode w500'>
+	<xt>&lt;dependency&gt;</xt>
+		<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
+		<xt>&lt;artifactId&gt;</xt>juneau-microservice-server<xt>&lt;/artifactId&gt;</xt>
+		<xt>&lt;version&gt;</xt>{@property juneauVersion}<xt>&lt;/version&gt;</xt>
+	<xt>&lt;/dependency&gt;</xt>
+</p>	
+
+<h5 class='figure'>Java Library</h5>
+<p class='bpcode w500'>
+	juneau-microservice-server-{@property juneauVersion}.jar 
+</p>	
+
+<h5 class='figure'>OSGi Module</h5>
+<p class='bpcode w500'>
+	org.apache.juneau.microservice.jetty.server_{@property juneauVersion}.jar 
+</p>	
+
+<h5 class='figure'>Microservice Starter Project</h5>
+<p class='bpcode w500'>
+	my-microservice.zip 
+</p>	
+
+<p>
+	Juneau Microservice is an API for creating stand-alone executable jars that can be used to 
+	start lightweight configurable REST interfaces with all the power of the Juneau REST server and client APIs.
+</p>
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.Introduction' id='juneau-microservice-jetty-template.Introduction'>13.1 - Microservice Introduction</a></h3>
+<div class='topic'><!-- START: 13.1 - juneau-microservice-jetty-template.Introduction -->
+<p>
+	The Microservice API consists of a combination of the Juneau Core, Server, and Client APIs and an embedded
+	Eclipse Jetty Servlet Container.  
+	<br>It includes all libraries needed to execute in a Java 1.7+ environment.
+</p>
+<p>
+	Features include:
+</p>
+<ul class='spaced-list'>
+	<li>
+		An out-of-the-box zipped Eclipse project to get started quickly.
+	<li>
+		Packaged as a simple executable jar and configuration file.
+	<li>
+		All the power of the Juneau ecosystem for defining REST servlets and clients with the ability to 
+		serialize and parse POJOs as HTML, JSON, XML, RDF, URL-Encoding, and others.
+	<li>
+		An extensible API that allows you to hook into various lifecycle events.
+	<li>
+		Simple-to-use APIs for accessing manifest file entries, command-line arguments, and external configuration 
+		file properties.
+	<li>
+		Predefined REST resources for configuring microservice and accessing log files.
+</ul>
+<p>
+	The <code>juneau-microservice-server</code> library consists of the following classes:
+</p>
+<ul class='doctree'>
+	<li class='jac'>
+		{@link org.apache.juneau.microservice.Microservice} 
+		- Defines basic lifecycle methods for microservices in general.
+		<ul>
+			<li class='jc'>
+				{@link org.apache.juneau.microservice.RestMicroservice}
+				- Defines additional lifecycle methods for REST microservices.
+				<br>Starts up an externally-configured Jetty server, registers servlets, and sets up 
+				other features such as logging.  
+		</ul>
+</ul>
+</div><!-- END: 13.1 - juneau-microservice-jetty-template.Introduction -->
+
+<!-- ==================================================================================================== -->
+
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.GettingStarted' id='juneau-microservice-jetty-template.GettingStarted'>13.2 - Getting Started</a></h3>
+<div class='topic'><!-- START: 13.2 - juneau-microservice-jetty-template.GettingStarted -->
+<p>
+	The <l>my-microservice.zip</l> file is a zipped eclipse project that includes everything you 
+	need to create a REST microservice in an Eclipse workspace.
+</p>
+
+<!-- ==================================================================================================== -->
+
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.GettingStarted.Installing' id='juneau-microservice-jetty-template.GettingStarted.Installing'>13.2.1 - Installing in Eclipse</a></h4>
+<div class='topic'><!-- START: 13.2.1 - juneau-microservice-jetty-template.GettingStarted.Installing -->
+<p>
+	Follow these instructions to create a new template project in Eclipse.
+</p>		
+<ol class='spaced-list'>
+	<li>
+		Download the latest microservice-project zip file (e.g. <l>my-microservice.zip</l>).
+	<li>
+		In your Eclipse workspace, go to <b>File -&gt; Import -&gt; General -&gt; Existing Projects into Workspace</b> 
+		and select the zip file and click <b>Finish</b>.
+		<br><br>
+		<img class='bordered' src='doc-files/juneau-microservice-server.Installing.1.png' style='width:549px'>
+	<li>
+		In your workspace, you should now see the following project:
+		<br><br>
+		<img class='bordered' src='doc-files/juneau-microservice-server.Installing.2.png' style='width:299px'>
+</ol>
+<p>
+	The important elements in this project are:
+</p>
+<ul class='spaced-list'>
+	<li>
+		<l>RootResources.java</l> - The top-level REST resource. 
+		<br>This class routes HTTP requests to child resources:
+		<br><br>
+		<p class='bcode w800'>
+	<ja>@RestResource</ja>(
+		path=<js>"/"</js>,
+		title=<js>"My Microservice"</js>,
+		description=<js>"Top-level resources page"</js>,
+		htmldoc=<ja>@HtmlDoc</ja>(
+			widgets={
+				ContentTypeMenuItem.<jk>class</jk>,
+				StyleMenuItem.<jk>class</jk>
+			},
+			navlinks={
+				<js>"options: servlet:/?method=OPTIONS"</js>
+			}
+		),
+		children={
+			HelloWorldResource.<jk>class</jk>,
+			ConfigResource.<jk>class</jk>,
+			LogsResource.<jk>class</jk>
+		}
+	)
+	<jk>public class</jk> RootResources <jk>extends</jk> BasicRestServletJenaGroup {
+		<jc>// No code</jc>
+	}
+		</p>
+	<li>
+		<l>my-microservice.cfg</l> - The external configuration file. 
+		<br>Contains various useful settings.
+		<br>Can be used for your own resource configurations.
+		<br><br>
+		<p class='bcode w800'>
+	<cc>#=======================================================================================================================
+	# Basic configuration file for REST microservices
+	# Subprojects can use this as a starting point.
+	#=======================================================================================================================</cc>
+	
 	<cc># What to do when the config file is saved.
 	# Possible values:
 	# 	NOTHING - Don't do anything. (default)
@@ -24621,12 +25150,12 @@
 <p>
 	At this point, you're ready to start the microservice from your workspace.
 </p>
-</div><!-- END: 12.2.1 - juneau-microservice-jetty.GettingStarted.Installing -->
+</div><!-- END: 13.2.1 - juneau-microservice-jetty-template.GettingStarted.Installing -->
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.GettingStarted.Running' id='juneau-microservice-jetty.GettingStarted.Running'>12.2.2 - Running in Eclipse</a></h4>
-<div class='topic'><!-- START: 12.2.2 - juneau-microservice-jetty.GettingStarted.Running -->
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.GettingStarted.Running' id='juneau-microservice-jetty-template.GettingStarted.Running'>13.2.2 - Running in Eclipse</a></h4>
+<div class='topic'><!-- START: 13.2.2 - juneau-microservice-jetty-template.GettingStarted.Running -->
 <p>
 	The <l>my-microservice.launch</l> file is already provided to allow you to quickly start
 	your new microservice.
@@ -24658,12 +25187,12 @@
 	You have started a REST interface on port 10000.
 	<br>You can enter the command <code>exit</code> to shut it down.
 </p>
-</div><!-- END: 12.2.2 - juneau-microservice-jetty.GettingStarted.Running -->
+</div><!-- END: 13.2.2 - juneau-microservice-jetty-template.GettingStarted.Running -->
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.GettingStarted.Building' id='juneau-microservice-jetty.GettingStarted.Building'>12.2.3 - Building and Running from Command-Line</a></h4>
-<div class='topic'><!-- START: 12.2.3 - juneau-microservice-jetty.GettingStarted.Building -->
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.GettingStarted.Building' id='juneau-microservice-jetty-template.GettingStarted.Building'>13.2.3 - Building and Running from Command-Line</a></h4>
+<div class='topic'><!-- START: 13.2.3 - juneau-microservice-jetty-template.GettingStarted.Building -->
 <p>
 	The <l>pom.xml</l> file is a basic Maven build script for creating your microservice
 	as an executable uber-jar.
@@ -24706,13 +25235,13 @@
 	If you get this error message: <code class='snippet'>java.net.BindException: Address already in use</code>, 
 	then this microservice is already running elsewhere and so it cannot bind to port 10000.
 </p>
-</div><!-- END: 12.2.3 - juneau-microservice-jetty.GettingStarted.Building -->
-</div><!-- END: 12.2 - juneau-microservice-jetty.GettingStarted -->
+</div><!-- END: 13.2.3 - juneau-microservice-jetty-template.GettingStarted.Building -->
+</div><!-- END: 13.2 - juneau-microservice-jetty-template.GettingStarted -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Manifest' id='juneau-microservice-jetty.Manifest'>12.3 - Manifest File</a></h3>
-<div class='topic'><!-- START: 12.3 - juneau-microservice-jetty.Manifest -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.Manifest' id='juneau-microservice-jetty-template.Manifest'>13.3 - Manifest File</a></h3>
+<div class='topic'><!-- START: 13.3 - juneau-microservice-jetty-template.Manifest -->
 <p>
 	The generated <l>META-INF/MANIFEST.MF</l> file is used to describe the microservice. 
 	<br>If you open it, you'll see the following:
@@ -24736,8 +25265,8 @@
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Manifest.ManifestApi' id='juneau-microservice-jetty.Manifest.ManifestApi'>12.3.1 - Manifest API</a></h4>
-<div class='topic'><!-- START: 12.3.1 - juneau-microservice-jetty.Manifest.ManifestApi -->
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.Manifest.ManifestApi' id='juneau-microservice-jetty-template.Manifest.ManifestApi'>13.3.1 - Manifest API</a></h4>
+<div class='topic'><!-- START: 13.3.1 - juneau-microservice-jetty-template.Manifest.ManifestApi -->
 <p>
 	The {@link org.apache.juneau.microservice.Microservice#getManifest()} method is a static method that
 	can be used to retrieve the manifest file as a {@link org.apache.juneau.utils.ManifestFile}.  
@@ -24751,13 +25280,13 @@
 	making it possible to retrieve entries as a wide variety of object types such as java primitives, arrays, collections, 
 	maps, or even POJOs serialized as JSON.
 </p>
-</div><!-- END: 12.3.1 - juneau-microservice-jetty.Manifest.ManifestApi -->
-</div><!-- END: 12.3 - juneau-microservice-jetty.Manifest -->
+</div><!-- END: 13.3.1 - juneau-microservice-jetty-template.Manifest.ManifestApi -->
+</div><!-- END: 13.3 - juneau-microservice-jetty-template.Manifest -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Config' id='juneau-microservice-jetty.Config'>12.4 - Config</a></h3>
-<div class='topic'><!-- START: 12.4 - juneau-microservice-jetty.Config -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.Config' id='juneau-microservice-jetty-template.Config'>13.4 - Config</a></h3>
+<div class='topic'><!-- START: 13.4 - juneau-microservice-jetty-template.Config -->
 <p>
 	The microservice config file is an external INI-style configuration file that is used to configure
 	your microservice.
@@ -24769,8 +25298,8 @@
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.Config.ConfigApi' id='juneau-microservice-jetty.Config.ConfigApi'>12.4.1 - Config File API</a></h4>
-<div class='topic'><!-- START: 12.4.1 - juneau-microservice-jetty.Config.ConfigApi -->
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.Config.ConfigApi' id='juneau-microservice-jetty-template.Config.ConfigApi'>13.4.1 - Config File API</a></h4>
+<div class='topic'><!-- START: 13.4.1 - juneau-microservice-jetty-template.Config.ConfigApi -->
 <p>
 	There are 3 primary ways of getting access to the config file.
 </p>
@@ -24883,13 +25412,13 @@
 	This particular example is needlessly complex, but it gives an idea of how variables can be used 
 	recursively to produce sophisticated results
 </p>
-</div><!-- END: 12.4.1 - juneau-microservice-jetty.Config.ConfigApi -->
-</div><!-- END: 12.4 - juneau-microservice-jetty.Config -->
+</div><!-- END: 13.4.1 - juneau-microservice-jetty-template.Config.ConfigApi -->
+</div><!-- END: 13.4 - juneau-microservice-jetty-template.Config -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.ResourceClasses' id='juneau-microservice-jetty.ResourceClasses'>12.5 - Resource Classes</a></h3>
-<div class='topic'><!-- START: 12.5 - juneau-microservice-jetty.ResourceClasses -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.ResourceClasses' id='juneau-microservice-jetty-template.ResourceClasses'>13.5 - Resource Classes</a></h3>
+<div class='topic'><!-- START: 13.5 - juneau-microservice-jetty-template.ResourceClasses -->
 <p>
 	Now let's take a look at the resource classes themselves.  
 	<br>The top-level page...
@@ -24958,12 +25487,12 @@
 		}
 	}		
 </p>
-</div><!-- END: 12.5 - juneau-microservice-jetty.ResourceClasses -->
+</div><!-- END: 13.5 - juneau-microservice-jetty-template.ResourceClasses -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.PredefinedResourceClasses' id='juneau-microservice-jetty.PredefinedResourceClasses'>12.6 - Predefined Resource Classes</a></h3>
-<div class='topic'><!-- START: 12.6 - juneau-microservice-jetty.PredefinedResourceClasses -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.PredefinedResourceClasses' id='juneau-microservice-jetty-template.PredefinedResourceClasses'>13.6 - Predefined Resource Classes</a></h3>
+<div class='topic'><!-- START: 13.6 - juneau-microservice-jetty-template.PredefinedResourceClasses -->
 <p>
 	The following predefined resource classes are also provided for easy inclusion into your microservice:
 </p>
@@ -24979,12 +25508,12 @@
 	<li class='jc'>{@link org.apache.juneau.microservice.resources.ShutdownResource}
 		- Shutdown and/or restart the JVM.
 </ul>
-</div><!-- END: 12.6 - juneau-microservice-jetty.PredefinedResourceClasses -->
+</div><!-- END: 13.6 - juneau-microservice-jetty-template.PredefinedResourceClasses -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.RestMicroservice' id='juneau-microservice-jetty.RestMicroservice'>12.7 - RestMicroservice</a></h3>
-<div class='topic'><!-- START: 12.7 - juneau-microservice-jetty.RestMicroservice -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.RestMicroservice' id='juneau-microservice-jetty-template.RestMicroservice'>13.7 - RestMicroservice</a></h3>
+<div class='topic'><!-- START: 13.7 - juneau-microservice-jetty-template.RestMicroservice -->
 <p>
 	The {@link org.apache.juneau.microservice.RestMicroservice} class is the main application entry-point for REST 
 	microservices. 
@@ -25011,8 +25540,8 @@
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty.RestMicroservice.Extending' id='juneau-microservice-jetty.RestMicroservice.Extending'>12.7.1 - Extending RestMicroservice</a></h4>
-<div class='topic'><!-- START: 12.7.1 - juneau-microservice-jetty.RestMicroservice.Extending -->
+<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.RestMicroservice.Extending' id='juneau-microservice-jetty-template.RestMicroservice.Extending'>13.7.1 - Extending RestMicroservice</a></h4>
+<div class='topic'><!-- START: 13.7.1 - juneau-microservice-jetty-template.RestMicroservice.Extending -->
 <p>
 	This example shows how the {@link org.apache.juneau.microservice.RestMicroservice} class
 	can be extended to implement lifecycle listener methods or override existing methods.
@@ -25060,13 +25589,13 @@
 	<li class='jac'>{@link org.apache.juneau.microservice.Microservice}
 	<li class='jc'>{@link org.apache.juneau.microservice.RestMicroservice}
 </ul>
-</div><!-- END: 12.7.1 - juneau-microservice-jetty.RestMicroservice.Extending -->
-</div><!-- END: 12.7 - juneau-microservice-jetty.RestMicroservice -->
+</div><!-- END: 13.7.1 - juneau-microservice-jetty-template.RestMicroservice.Extending -->
+</div><!-- END: 13.7 - juneau-microservice-jetty-template.RestMicroservice -->
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty.UiCustomization' id='juneau-microservice-jetty.UiCustomization'>12.8 - UI Customization</a></h3>
-<div class='topic'><!-- START: 12.8 - juneau-microservice-jetty.UiCustomization -->
+<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template.UiCustomization' id='juneau-microservice-jetty-template.UiCustomization'>13.8 - UI Customization</a></h3>
+<div class='topic'><!-- START: 13.8 - juneau-microservice-jetty-template.UiCustomization -->
 <p>
 	The Microservice project contains a <code>files/htdocs</code> working directly folder with predefined stylesheets and
 	images.
@@ -25176,41 +25705,7 @@
 	<ck>RestContext.useClasspathResourceCaching.b</ck> = <cv>false</cv>
 
 </p>
-</div><!-- END: 12.8 - juneau-microservice-jetty.UiCustomization -->
-</div><!-- END: 12 - juneau-microservice-jetty -->
-
-<!-- ==================================================================================================== -->
-
-<h2 class='topic todo' onclick='toggle(this)'><a href='#juneau-microservice-jetty-template' id='juneau-microservice-jetty-template'>13 - juneau-microservice-jetty-template</a></h2>
-<div class='topic'><!-- START: 13 - juneau-microservice-jetty-template -->
-<h5 class='figure'>Maven Dependency</h5>
-<p class='bpcode w500'>
-	<xt>&lt;dependency&gt;</xt>
-		<xt>&lt;groupId&gt;</xt>org.apache.juneau<xt>&lt;/groupId&gt;</xt>
-		<xt>&lt;artifactId&gt;</xt>juneau-microservice-server<xt>&lt;/artifactId&gt;</xt>
-		<xt>&lt;version&gt;</xt>{@property juneauVersion}<xt>&lt;/version&gt;</xt>
-	<xt>&lt;/dependency&gt;</xt>
-</p>	
-
-<h5 class='figure'>Java Library</h5>
-<p class='bpcode w500'>
-	juneau-microservice-server-{@property juneauVersion}.jar 
-</p>	
-
-<h5 class='figure'>OSGi Module</h5>
-<p class='bpcode w500'>
-	org.apache.juneau.microservice.jetty.server_{@property juneauVersion}.jar 
-</p>	
-
-<h5 class='figure'>Microservice Starter Project</h5>
-<p class='bpcode w500'>
-	my-microservice.zip 
-</p>	
-
-<p>
-	Juneau Microservice is an API for creating stand-alone executable jars that can be used to 
-	start lightweight configurable REST interfaces with all the power of the Juneau REST server and client APIs.
-</p>
+</div><!-- END: 13.8 - juneau-microservice-jetty-template.UiCustomization -->
 </div><!-- END: 13 - juneau-microservice-jetty-template -->
 
 <!-- ==================================================================================================== -->
@@ -25252,7 +25747,7 @@
 
 <!-- ==================================================================================================== -->
 
-<h3 class='topic todo' onclick='toggle(this)'><a href='#juneau-examples-core.Examples' id='juneau-examples-core.Examples'>14.1 - Examples</a></h3>
+<h3 class='topic new' onclick='toggle(this)'><a href='#juneau-examples-core.Examples' id='juneau-examples-core.Examples'>14.1 - Examples</a></h3>
 <div class='topic'><!-- START: 14.1 - juneau-examples-core.Examples -->
 <p>
 	The following shows the core examples provided:
@@ -25262,7 +25757,7 @@
 	<ul>
 		<li class='jc'>{@link org.apache.juneau.examples.core.json.JsonSimpleExample} - JsonSerializer and JsonParser usage on serialize and deserialize simple Pojo bean.
 		<li class='jc'>{@link org.apache.juneau.examples.core.json.JsonComplexExample} - JsonSerializer and JsonParser usage on serialize and deserialize complex Pojo bean.
-		<li class='jc'>{@link org.apache.juneau.examples.core.json.JsonConfigurationExample} - TODO
+		<li class='jc'>{@link org.apache.juneau.examples.core.json.JsonConfigurationExample} 
 	</ul>
 	<li class='jp'><code>org.apache.juneau.examples.core.xml</code>
 	<ul>
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt b/juneau-doc/src/main/javadoc/resources/docs.txt
index 439681f..c219c17 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -216,19 +216,26 @@ juneau-microservice-core.SystemProperties = #juneau-microservice-core.SystemProp
 juneau-microservice-core.VarResolver = #juneau-microservice-core.VarResolver, Overview > juneau-microservice-core > VarResolver
 juneau-microservice-jetty = #juneau-microservice-jetty, Overview > juneau-microservice-jetty
 juneau-microservice-jetty-template = #juneau-microservice-jetty-template, Overview > juneau-microservice-jetty-template
+juneau-microservice-jetty-template.Config = #juneau-microservice-jetty-template.Config, Overview > juneau-microservice-jetty-template > Config
+juneau-microservice-jetty-template.Config.ConfigApi = #juneau-microservice-jetty-template.Config.ConfigApi, Overview > juneau-microservice-jetty-template > Config > Config File API
+juneau-microservice-jetty-template.GettingStarted = #juneau-microservice-jetty-template.GettingStarted, Overview > juneau-microservice-jetty-template > Getting Started
+juneau-microservice-jetty-template.GettingStarted.Building = #juneau-microservice-jetty-template.GettingStarted.Building, Overview > juneau-microservice-jetty-template > Getting Started > Building and Running from Command-Line
+juneau-microservice-jetty-template.GettingStarted.Installing = #juneau-microservice-jetty-template.GettingStarted.Installing, Overview > juneau-microservice-jetty-template > Getting Started > Installing in Eclipse
+juneau-microservice-jetty-template.GettingStarted.Running = #juneau-microservice-jetty-template.GettingStarted.Running, Overview > juneau-microservice-jetty-template > Getting Started > Running in Eclipse
+juneau-microservice-jetty-template.Introduction = #juneau-microservice-jetty-template.Introduction, Overview > juneau-microservice-jetty-template > Microservice Introduction
+juneau-microservice-jetty-template.Manifest = #juneau-microservice-jetty-template.Manifest, Overview > juneau-microservice-jetty-template > Manifest File
+juneau-microservice-jetty-template.Manifest.ManifestApi = #juneau-microservice-jetty-template.Manifest.ManifestApi, Overview > juneau-microservice-jetty-template > Manifest File > Manifest API
+juneau-microservice-jetty-template.PredefinedResourceClasses = #juneau-microservice-jetty-template.PredefinedResourceClasses, Overview > juneau-microservice-jetty-template > Predefined Resource Classes
+juneau-microservice-jetty-template.ResourceClasses = #juneau-microservice-jetty-template.ResourceClasses, Overview > juneau-microservice-jetty-template > Resource Classes
+juneau-microservice-jetty-template.RestMicroservice = #juneau-microservice-jetty-template.RestMicroservice, Overview > juneau-microservice-jetty-template > RestMicroservice
+juneau-microservice-jetty-template.RestMicroservice.Extending = #juneau-microservice-jetty-template.RestMicroservice.Extending, Overview > juneau-microservice-jetty-template > RestMicroservice > Extending RestMicroservice
+juneau-microservice-jetty-template.UiCustomization = #juneau-microservice-jetty-template.UiCustomization, Overview > juneau-microservice-jetty-template > UI Customization
 juneau-microservice-jetty.Config = #juneau-microservice-jetty.Config, Overview > juneau-microservice-jetty > Config
-juneau-microservice-jetty.Config.ConfigApi = #juneau-microservice-jetty.Config.ConfigApi, Overview > juneau-microservice-jetty > Config > Config File API
-juneau-microservice-jetty.GettingStarted = #juneau-microservice-jetty.GettingStarted, Overview > juneau-microservice-jetty > Getting Started
-juneau-microservice-jetty.GettingStarted.Building = #juneau-microservice-jetty.GettingStarted.Building, Overview > juneau-microservice-jetty > Getting Started > Building and Running from Command-Line
-juneau-microservice-jetty.GettingStarted.Installing = #juneau-microservice-jetty.GettingStarted.Installing, Overview > juneau-microservice-jetty > Getting Started > Installing in Eclipse
-juneau-microservice-jetty.GettingStarted.Running = #juneau-microservice-jetty.GettingStarted.Running, Overview > juneau-microservice-jetty > Getting Started > Running in Eclipse
-juneau-microservice-jetty.Introduction = #juneau-microservice-jetty.Introduction, Overview > juneau-microservice-jetty > Microservice Introduction
-juneau-microservice-jetty.Manifest = #juneau-microservice-jetty.Manifest, Overview > juneau-microservice-jetty > Manifest File
-juneau-microservice-jetty.Manifest.ManifestApi = #juneau-microservice-jetty.Manifest.ManifestApi, Overview > juneau-microservice-jetty > Manifest File > Manifest API
+juneau-microservice-jetty.Extending = #juneau-microservice-jetty.Extending, Overview > juneau-microservice-jetty > Extending RestMicroservice
+juneau-microservice-jetty.LifecycleMethods = #juneau-microservice-jetty.LifecycleMethods, Overview > juneau-microservice-jetty > Lifecycle Methods
+juneau-microservice-jetty.Overview = #juneau-microservice-jetty.Overview, Overview > juneau-microservice-jetty > Overview
 juneau-microservice-jetty.PredefinedResourceClasses = #juneau-microservice-jetty.PredefinedResourceClasses, Overview > juneau-microservice-jetty > Predefined Resource Classes
 juneau-microservice-jetty.ResourceClasses = #juneau-microservice-jetty.ResourceClasses, Overview > juneau-microservice-jetty > Resource Classes
-juneau-microservice-jetty.RestMicroservice = #juneau-microservice-jetty.RestMicroservice, Overview > juneau-microservice-jetty > RestMicroservice
-juneau-microservice-jetty.RestMicroservice.Extending = #juneau-microservice-jetty.RestMicroservice.Extending, Overview > juneau-microservice-jetty > RestMicroservice > Extending RestMicroservice
 juneau-microservice-jetty.UiCustomization = #juneau-microservice-jetty.UiCustomization, Overview > juneau-microservice-jetty > UI Customization
 juneau-rest-client = #juneau-rest-client, Overview > juneau-rest-client
 juneau-rest-client.Authentication = #juneau-rest-client.Authentication, Overview > juneau-rest-client > Authentication
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index e9256b1..a76bd18 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -349,35 +349,44 @@
 		<li><p class='new'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-core.Logging'>Logging</a></p>
 		<li><p class='new'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-core.Listeners'>Listeners</a></p>
 	</ol>
-	<li><p class='toc2 todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
+	<li><p class='toc2 new'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty'>juneau-microservice-jetty</a></p>
 	<ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Introduction'>Microservice Introduction</a></p>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted'>Getting Started</a></p>
+		<li><p class='new'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Overview'>Overview</a></p>
+		<li><p class='new'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.LifecycleMethods'>Lifecycle Methods</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Config'>Config</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+		<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Extending'>Extending RestMicroservice</a></p>
+	</ol>
+	<li><p class='toc2 todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
+	<ol>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Introduction'>Microservice Introduction</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted'>Getting Started</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Installing'>Installing in Eclipse</a></p>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Running'>Running in Eclipse</a></p>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.GettingStarted.Building'>Building and Running from Command-Line</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Installing'>Installing in Eclipse</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Running'>Running in Eclipse</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.GettingStarted.Building'>Building and Running from Command-Line</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Manifest'>Manifest File</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Manifest'>Manifest File</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Manifest.ManifestApi'>Manifest API</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Manifest.ManifestApi'>Manifest API</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Config'>Config</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Config'>Config</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.Config.ConfigApi'>Config File API</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.Config.ConfigApi'>Config File API</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.ResourceClasses'>Resource Classes</a></p>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.RestMicroservice'>RestMicroservice</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.ResourceClasses'>Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.PredefinedResourceClasses'>Predefined Resource Classes</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.RestMicroservice'>RestMicroservice</a></p>
 		<ol>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.RestMicroservice.Extending'>Extending RestMicroservice</a></p>
+			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.RestMicroservice.Extending'>Extending RestMicroservice</a></p>
 		</ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty.UiCustomization'>UI Customization</a></p>
+		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template.UiCustomization'>UI Customization</a></p>
 	</ol>
-	<li><p class='toc2 todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-microservice-jetty-template'>juneau-microservice-jetty-template</a></p>
 	<li><p class='toc2 '><a class='doclink' href='{OVERVIEW_URL}#juneau-examples-core'>juneau-examples-core</a></p>
 	<ol>
-		<li><p class='todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-examples-core.Examples'>Examples</a></p>
+		<li><p class='new'><a class='doclink' href='{OVERVIEW_URL}#juneau-examples-core.Examples'>Examples</a></p>
 	</ol>
 	<li><p class='toc2 todo'><a class='doclink' href='{OVERVIEW_URL}#juneau-examples-rest'>juneau-examples-rest</a></p>
 	<ol>
diff --git a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
index 6bff077..517dbb5 100644
--- a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
+++ b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/petstore/dto/PetTagNameSwap.java
@@ -2,7 +2,7 @@
 // * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
 // * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
 // * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                                                              * 
+// * with the License.  You may obtain a copy of the License at                                                              *
 // *                                                                                                                         *
 // *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
 // *                                                                                                                         *
@@ -17,10 +17,18 @@ import org.apache.juneau.http.*;
 import org.apache.juneau.transform.*;
 
 public class PetTagNameSwap extends PojoSwap<PetTag,String> {
+
+	/**
+	 * Swap PetTag with name.
+	 */
 	@Override
 	public String swap(BeanSession bs, PetTag o) throws Exception {
 		return o.getName();
 	}
+
+	/**
+	 * This is only applicable to HTML serialization.
+	 */
 	@Override
 	public MediaType[] forMediaTypes() {
 		return new MediaType[] { MediaType.HTML };


Mime
View raw message